Sackboy 发表于 2023-12-11 15:46:49

请教各位大神,我想通过LISP凭空创建一个图块应该如何写

比如我现在需要生成一个图块,图形文件中本不存在这个块并且也没有制作图块的对象,我的想法是在block表内添加表来创建图块,但是不知道用什么函数来实现,请问各位大神能否给我指条路?或者说有没有更好的办法?最后实现的效果可能和天正插入图块的效果差不多

e2002 发表于 2023-12-11 16:09:01

entmake 或者 vla-Add 都可以呀

soly2006 发表于 2023-12-11 16:18:18

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85342&extra=page%3D1%26filter%3Dtypeid%26typeid%3D109

bonny 发表于 2023-12-11 16:19:34

提供个恩特马克的例子,仅供参考
(defun c:tt (/ bn p p1 p2 p3 p4 pt)
        (setq bn "飞翔标高")
        (if (null (tblsearch "BLOCK" bn))
                (progn
                        (setq p2 '(0 0 0))
                        (setq p1 (polar p2 (* pi 0.75) 2.))
                        (setq p3 (polar p2 (* pi 0.25) 2.))
                        (setq p4 (polar p3 pi 8.))
                        (setq pt (polar p4 (* pi 0.5) 1.))
                        (entmake
                                (list '(0 . "BLOCK")
                                        (cons 2 bn)
                                        '(70 . 2)
                                        (cons 10 p2)
                                )
                        )
                        (entmake
                                (list '(0 . "LWPOLYLINE")
                                        '(100 . "AcDbEntity")
                                        '(100 . "AcDbPolyline")
                                        '(90 . 4)
                                        (cons 10 p1)
                                        (cons 10 p2)
                                        (cons 10 p3)
                                        (cons 10 p4)
                                        '(70 . 0)
                                )
                        )
                        (entmake
                                (list '(0 . "ATTDEF")
                                        '(100 . "AcDbEntity")
                                        '(100 . "AcDbText")
                                        (cons 10 pt)
                                        (cons 40 1.8)
                                        (cons 1 "0.000")
                                        '(100 . "AcDbAttributeDefinition")
                                        (cons 3 "标高")
                                        (cons 2 "标高")
                                        '(70 . 0)
                                )
                        )
                        (entmake '((0 . "ENDBLK")))
                )               
        )
        (if (setq p (getpoint))
                (progn
                        (entmakeX
                                (list '(0 . "INSERT")
                                        '(100 . "AcDbEntity")
                                        '(100 . "AcDbBlockReference")
                                        (cons 2 bn)
                                        (cons 10 p)
                                )
                        )
                        (vl-cmdf "attsync" "n" bn)
                )               
        )       
)

Sackboy 发表于 2023-12-12 10:19:15

soly2006 发表于 2023-12-11 16:18
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85342&extra=page%3D1%26filter%3Dtypeid%26typeid%3D1 ...

感谢,我研究研究

Sackboy 发表于 2023-12-12 11:05:04

bonny 发表于 2023-12-11 16:19
提供个恩特马克的例子,仅供参考

非常好的例子,能用上了,感谢

panliang9 发表于 2023-12-13 08:33:52

新建空白块并进入编辑,飞诗写的。
http://bbs.mjtd.com/thread-188899-1-1.html
页: [1]
查看完整版本: 请教各位大神,我想通过LISP凭空创建一个图块应该如何写