tudou203 发表于 2011-10-14 10:28:40

autolisp 块

请问怎么用autolisp命令生成块,并将图元加到块中

Gu_xl 发表于 2011-10-14 10:56:44

最简单的,你在cad里怎么用command命令建块,你就一句一句的写到lisp里来!示例:
(command "block" 块名称 插入基点 选择集 "")

vormittag 发表于 2011-10-14 12:54:47

本帖最后由 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版本或环境变量不同,需要输入的参数是不同的。

tudou203 发表于 2011-10-14 15:46:26

Gu_xl 发表于 2011-10-14 10:56 static/image/common/back.gif
最简单的,你在cad里怎么用command命令建块,你就一句一句的写到lisp里来!示例:
(command "block" 块名称 ...

谢谢版主,我是新手,目前已解决,非常感谢,很受鼓舞

tudou203 发表于 2011-10-14 15:50:14

vormittag 发表于 2011-10-14 12:54 static/image/common/back.gif
楼主是想问怎样创建块定义(0 . "BLOCK"),还是怎样插入图块图元(0 . "INSERT")?
前者: 后者: 我很少使用 ...

我是问创建啊,呵呵。谢谢您的帮助,很受鼓舞,采用您的方法解决了,在研究您的程序,本人新手,非常感谢。祝身体健康,工作顺利

tudou203 发表于 2011-10-14 15:53:37

强大的论坛,很喜欢

raimo 发表于 2011-10-15 07:41:13

问题得到解决时最该感谢论坛的这些高手们了

cash1331 发表于 2011-10-18 21:46:18

这论坛人真友好。。我现在也会插入块了。
我还有一个问题,要炸开,这个插入命令怎么写。应该不用后面跟一个炸开命令 _explode 吧

   (entmake (list (cons 0 "INSERT") ;插入
            (cons 2 "epin4") ;插入块的名字
            (cons 6 "BYLAYER")
            (cons 8 "0")
            (cons 10 pt) ;插入点
         ))

houncle 发表于 2011-11-12 19:38:37

学习,学习
页: [1]
查看完整版本: autolisp 块