autolisp 块
请问怎么用autolisp命令生成块,并将图元加到块中 最简单的,你在cad里怎么用command命令建块,你就一句一句的写到lisp里来!示例:(command "block" 块名称 插入基点 选择集 "") 本帖最后由 vormittag 于 2011-10-14 13:06 编辑
楼主是想问怎样创建块定义(0 . "BLOCK"),还是怎样插入图块图元(0 . "INSERT")?
前者: (defun make_blk_bmw()
(entmake
(list
(cons 0 "BLOCK")
(cons 2 "BMW")
(cons 70 0)
(cons 10 '(0 0 0))
);list
);entmake
(entmake
(list
(cons 0 "CIRCLE")
(cons 8 "0")
(cons 10 (list 0 0 0))
(cons 40 0.5)
);list
);entmake
(entmake
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 8 "0")
(cons 100 "AcDbPolyline")
(cons 43 0.5)
(cons 90 2)
(cons 70 0)
(cons 10 (list 0.25 0 0))
(cons 42 (- (sqrt 2.0) 1.0))
(cons 10 (list 0 0.25 0))
);list
);entmake
(entmake
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 8 "0")
(cons 100 "AcDbPolyline")
(cons 43 0.5)
(cons 90 2)
(cons 70 0)
(cons 10 (list -0.25 0 0))
(cons 42 (- (sqrt 2.0) 1.0))
(cons 10 (list 0 -0.25 0))
);list
);entmake
(entmake (list (cons 0 "ENDBLK")))
)后者:
(defun draw_blockwcs ( block_name
block_ptinsert
block_xscale
block_yscale
block_zscale
block_layer
block_angle
)
(entmake
(list
(cons 0 "INSERT")
(cons 2 block_name)
(cons 100 "AcDbEntity")
(cons 8 block_layer)
(cons 100 "AcDbBlockReference")
(cons 10 block_ptinsert)
(cons 41 block_xscale)
(cons 42 block_yscale)
(cons 43 block_zscale)
(cons 50 block_angle)
);list
);entmake
)
我很少使用command或者vl-cmdf,我总觉得用这两个命令像是在写脚本而不是在写程序。重要的一点是,有的命令由于CAD版本或环境变量不同,需要输入的参数是不同的。
Gu_xl 发表于 2011-10-14 10:56 static/image/common/back.gif
最简单的,你在cad里怎么用command命令建块,你就一句一句的写到lisp里来!示例:
(command "block" 块名称 ...
谢谢版主,我是新手,目前已解决,非常感谢,很受鼓舞 vormittag 发表于 2011-10-14 12:54 static/image/common/back.gif
楼主是想问怎样创建块定义(0 . "BLOCK"),还是怎样插入图块图元(0 . "INSERT")?
前者: 后者: 我很少使用 ...
我是问创建啊,呵呵。谢谢您的帮助,很受鼓舞,采用您的方法解决了,在研究您的程序,本人新手,非常感谢。祝身体健康,工作顺利 强大的论坛,很喜欢 问题得到解决时最该感谢论坛的这些高手们了 这论坛人真友好。。我现在也会插入块了。
我还有一个问题,要炸开,这个插入命令怎么写。应该不用后面跟一个炸开命令 _explode 吧
(entmake (list (cons 0 "INSERT") ;插入
(cons 2 "epin4") ;插入块的名字
(cons 6 "BYLAYER")
(cons 8 "0")
(cons 10 pt) ;插入点
))
学习,学习
页:
[1]