有点麻烦,试图偷一点Lisp程序,并将其纳入我的整个Lisp程序例程。有谁能帮我修改下面的代码,使其能够在更大的例程中自动运行吗?我试过各种各样的东西,虽然我似乎无法把它分类。
- (defun dxf (e code)
- (cdr (assoc code e))
- )
- (defun dxfPt2D (e code / x)
- (setq x (dxf e code))
- (if (= d "3d")
- (list (car x)(cadr x)(caddr x))
- (list (car x)(cadr x))
- )
- )
- (defun cvt1face (e)
- (command "_LINE" (dxfPt2D e 10) (dxfPt2D e 11) (dxfPt2D e 12) )
- (if (equal (dxf e 12)(dxf e 13))
- (command "_CL")
- (command (dxfPt2D e 13) "_CL")
- )
- )
- (defun C:3DF2L (/ ss ssl i e d)
- (setvar "CMDECHO" 0)
- ; (prompt "\nVyberte objekty 3DFACE pro prevod na cary: ")
- (prompt "\nSelect 3DFACE objects to convert to lines: ")
- (command "_SELECT" "_AU" pause)
- (setq ss (ssget "_P" '((0 . "3DFACE")))) ; jen 3DFACE
- (if (or (not ss) (zerop (setq ssl (sslength ss)))) (progn (prompt "*None*")(exit)) )
- (initget "2d 3d")
- (setq d (getkword "\nConvert to [2d/3d] <3d>: "))
- (if (not d)(setq d "3d"))
- (setq i 0)
- (command "_UNDO" "_BE")
- (command "_LAYER" "_M" "3DF2L" "") ; do zvl.hladiny
- (setvar "OSMODE" (boole 7 (getvar "OSMODE") 16384))
- (while (< i ssl)
- (setq e (ssname ss i))
- (cvt1face (entget e)) ; prevod
- (setq i (1+ i))
- );while
- (setvar "OSMODE" (boole 2 (getvar "OSMODE") 16384))
- (command "_UNDO" "_EN")
- (prompt "\nLines created to the layer 3DF2L")
- ; (if (= d "2d")(prompt "\nNyni vymazte usecky krome obrysovych (_ERASE _CP)\na pak dejte _PEDIT _Yes _Join"))
- (if (= d "2d")(prompt "\nFor outline curve erase all lines except outline (_ERASE _CP)\nand type _PEDIT _Yes _Join"))
- (princ)
- )
|