rengised 发表于 2022-7-6 12:05:45

Lisp到图标

嗨,又是我了,能把下面的lisp转换成图标吗?而不是键入命令。
我在asmitools中有一个很好的Lisp程序。感谢asmitools网站。
再次感谢各位。
 

(princ "\n<<< Select LwPolyline for dimensioning >>> ")
(if(setq plSet(ssget '((0 . "LWPOLYLINE"))))
   (progn
   (setq pLlst(vl-remove-if 'listp
                        (mapcar 'cadr(ssnamex plSet)))
    oldDss(getvar "DIMASSOC")
    ); end if
   (setvar "CMDECHO" 0)
   (command "_.undo" "_be")
   (setvar "DIMASSOC" 2)
   (foreach pl pLlst
(setq vLst(mapcar '(lambda(x)
           (trans x 0 1))(mapcar 'cdr
             (vl-remove-if-not
             '(lambda(x)(= 10(car x)))(entget pl))))
      ); end setq
(if(equal '(70 . 1)(assoc 70(entget pl)))
(setq vLst(append vLst(list(car vLst))))
); end if
(while(< 1(length vLst))
(setq cAng(angle(car vLst)(cadr vLst))
      cDis(/(distance(car vLst)(cadr vLst))2))
(if(>=(caar vLst)(caadr vLst))
    (setq cAng(- cAng pi))
    ); end if
(setq cPt(polar
             (polar(car vLst)cAng cDis)
             (+ cAng(* 0.5 pi))(* tOff
                                  (*(getvar "DIMSCALE")
                                      (getvar "DIMTXT"))))
        ); end setq
(command "_.dimaligned" "_end" (car vLst)
           "_end" (cadr vLst) "_none" cPt)
(setq vLst(cdr vLst))
); end while
); end foreach
   (setvar "DIMASSOC" oldDss)
   (command "_.undo" "_e")
   (setvar "CMDECHO" 1)
   ); end progn
   ); end if
(princ)
); end of c:pdim

(princ "\n http:\\\\www.AsmiTools.com ")
(princ "\n Type PDIM for multiple LwPolyline dimensioning. ")


lpseifert 发表于 2022-7-6 13:42:59

我假设你想做一个工具栏按钮。你知道所有的代码都没有发布,但我想我能理解。在CUI中,创建新命令;将其用作宏。
其中LispName是lisp文件的名称
页: [1]
查看完整版本: Lisp到图标