Autolisp

List

SyntaxePříkladPopis
(list <1> <2> <3>)(list 2 5 7)vytvoří list o daných prvcích
(car <list>)(car myList)vrátí první prvek listu
(cadr <list>)(cadr myList)vrátí druhý prvek listu
(nth <number> <list>)(nth 3 myList)vrátí n-tý prvek listu (počínaje nulou)
(last <list>)(last MyList)vrátí poslední prvek listu
(append <list1> <list2>) (append list1 list2) spojí 2 listy
(subst <newitem> <olditem> <list>)(subst 30 3 list)nahradí prvek v listu
(length <list>)(length list)vrátí počet prvků (bez nuly!)
(entsel <message>)(ensel „vyber objekt“)vrátí list o dvou prvcích (jméno entity a bod vybrání)
(entget <entityName>)(entget eName)vrátí výpis parametrů entity
(entmake <listOfProperties>)vytvoří entitu podle listu parametrů (vše text)
(entmod <listOfProperties>)aktualizuje databázi (například při změně hladiny)
(entnext <ename>)(entnext)vrátí jméno další entity
(assoc <groupcode> <entity>)(assoc 10 eData)vrátí příslušný prvek listu podle groupcode
(cdr <list>)(cdr list)odebere první prvek listu
(cons <firstele> <secondele>)(cons 0 „TEXT“), nebo ‚(0 . „TEXT“)vytvoří „tečkovou“ dvojici (ve tvaru parametrů dxf data format)

dxf data exchane format code

  • COMMON
    • -1 – entity name
    • 0 – entity type
    • 5 – handle
    • 6 – line type
    • 8 – layer
    • 48 – linetype scale
    • 62 – color
  • LINE
    • 10 – start point
    • 11 – end point
  • CIRCLE
    • 10 – center point
    • 40 – radius
  • TEXT
    • 1 – content
    • 7 – text style
    • 10 – insertion point
    • 40 – height
    • 50 – angle
    • 73 – justification

(entmake (list (cons 0 „line“) (cons 10 (list 20 25 0.0))(cons 11 (list 40 25 0.0))))

Funkce

SyntaxePříkladPopis
(distance <start> <end>)(distance stp endp)vrátí vzdálenost dvou bodů
(rtos <number> <numsys> <decimalplaces)(rtos len 2 2)převede číslo na text
(angle <point1> <point2>)(angle p1 p2)vrátí úhel mezi dvěma body v radiánech
(angtos <angleRad>)(angtos ang)převede radiány na stupně (string)
(angtof <angleDeg>)(angtof „90“)převede stupně (string) na radiány
(polar <point> <angle> <distance>)(polar p1 (angtof „30) 10)určí bod z výchozího bodu, vzdálenosti a úhlu v radiánech
(itoa <number>)(itoa 10)vrátí číslo jako string
(ssget)(ssget „x“)nechá vybrat objekty (s „x“ vybere vše v modelu)
(sslength <sset>)(sslength ssget1)udá počet prvků ve výběru
(ssname <sset> <index>)(ssname sset 0)vrátí jméno n-tého prvku (dle indexu – od nuly)
(wcmatch <string> <pattern>)(wcmatch txtCont „*.*“)bude true, pokud bude řetězec obsahovat nějaký znak
(foreach <sublist> <list>)(foreach sublist list)provede pro každý prvek listu
(strcase <string>)(strcase „pokus“)vrátí string velkými písmeny (POKUS), pokud doplním t bude malými
(strlen „string“)(strlen „pokus hokus“)vrátí počet znaků ve stringu (11)
(strcat <str1> <str2>) (strcat „pokus“ “ “ „hokus“) spojí stringy („pokus hokus“)
(substr <str> <start> <number>)(substr „pokus hokus“ 7 5)vrátí řetězec určený startem a počtem znaků (hokus)
(getstring <cr> <msg>)(getstring T „zadej string: „)zadá výzvu pro vložení stringu (pokud je parametr T může být i mezera, musí ukončit entrem)

Příklady

(setq eName (car (entsel))) ;do eName umístí jméno vybraného objektu
(setq eData (entget eName) ;do eData umístí dxf data objektu

(setq ssget1 (ssget "x" (list (cons 0 "text")))) ;vybere všechny texty
(sslength ssget1) ;vrátí počet

(command "chprop" txt "" "c" "1" "") ;změní barvu textu na červenou

Cykly

IF

(if (<cond>) (<command true>)(<command false>))

PROGN

(if (= r 0)
 (progn
  (<command1>)
  (<command2>)
 )
 (<elseCommand>)
)

COND

(cond
 ((= n 1) (allert "RED"))
 ((= n 2) (allert "BLACK"))
 ((= n 3) (allert "YELLOW"))
 ((= n 4) (allert "GREEN"))
 (t (alert "mimo rozsah"))
)

WHILE LOOP

(while (<condition>)
 st1
 st2
 st3
)

Užitečné příkazy

_BATTMANsesynchronizuje původní obsah atributů referencí bloku s novou podobou bloku
_ATTSYNCsynchronizace nové podoby bloků

VBA from Autocad to ZWCAD

  • Copy all codes in Thisdrawing from AutoCAD to ZWCAD
    Tips: if your VBA contains Classes, modules or forms, please export it in AutoCAD and then
    import to ZWCAD
  • Change entities type from AcadXXX to ZcadXXX, for example, AcadLayer →ZcadLayer,
    IAcadLWPolyline→IZcadLWPolyline
    Tips:you can just replace all “Acad” with “Zcad”
  • Change AcadAcCmColor to ZcadZcCmColor.
  • Change all the entity declaration from acXXX to zcXXX, for example acRed
    →zcRed,AcadAcCmColor to ZcadZcCmColor
    Tips: Please keep the Objectname the same as that in AutoCAD, such as AcDbLine must be
    kept.
  • AcadApplication.GetInterfaceObject(„AutoCAD.AcCmColor.16“)→ZcadApplication.GetInterfa
    ceObject(„ZWCAD.ZcCmColor“)
  • AcadApplication.GetInterfaceObject(„ObjectDBX.AxDbDocument.16“)→
    ZcadApplication.GetInterfaceObject(„ZWCAD.ZxDbDocument.2021“)
  • If when launch the program a message box pops up with message “Compile error: The code
    in this project must be updated for use on 64-bit systems. Please review and update Declare
    statements and then mark them with PtrSafe attribute.”, please change Declare to Declare
    PtrSafe in the declaration of the functions and subroutines when shows the error, and
    change Long to LongLong in parameter and return value.

Comments

Napsat komentář