明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 678|回复: 6

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

[复制链接]
发表于 2023-12-11 15:46 | 显示全部楼层 |阅读模式
比如我现在需要生成一个图块,图形文件中本不存在这个块并且也没有制作图块的对象,我的想法是在block表内添加表来创建图块,但是不知道用什么函数来实现,请问各位大神能否给我指条路?或者说有没有更好的办法?最后实现的效果可能和天正插入图块的效果差不多
发表于 2023-12-11 16:09 | 显示全部楼层
entmake 或者 vla-Add 都可以呀
发表于 2023-12-11 16:18 | 显示全部楼层
发表于 2023-12-11 16:19 | 显示全部楼层
提供个恩特马克的例子,仅供参考
  1. (defun c:tt (/ bn p p1 p2 p3 p4 pt)
  2.         (setq bn "飞翔标高")
  3.         (if (null (tblsearch "BLOCK" bn))
  4.                 (progn
  5.                         (setq p2 '(0 0 0))
  6.                         (setq p1 (polar p2 (* pi 0.75) 2.))
  7.                         (setq p3 (polar p2 (* pi 0.25) 2.))
  8.                         (setq p4 (polar p3 pi 8.))
  9.                         (setq pt (polar p4 (* pi 0.5) 1.))
  10.                         (entmake
  11.                                 (list '(0 . "BLOCK")
  12.                                         (cons 2 bn)
  13.                                         '(70 . 2)
  14.                                         (cons 10 p2)
  15.                                 )
  16.                         )
  17.                         (entmake
  18.                                 (list '(0 . "LWPOLYLINE")
  19.                                         '(100 . "AcDbEntity")
  20.                                         '(100 . "AcDbPolyline")
  21.                                         '(90 . 4)
  22.                                         (cons 10 p1)
  23.                                         (cons 10 p2)
  24.                                         (cons 10 p3)
  25.                                         (cons 10 p4)
  26.                                         '(70 . 0)
  27.                                 )
  28.                         )
  29.                         (entmake
  30.                                 (list '(0 . "ATTDEF")
  31.                                         '(100 . "AcDbEntity")
  32.                                         '(100 . "AcDbText")
  33.                                         (cons 10 pt)
  34.                                         (cons 40 1.8)
  35.                                         (cons 1 "0.000")
  36.                                         '(100 . "AcDbAttributeDefinition")
  37.                                         (cons 3 "标高")
  38.                                         (cons 2 "标高")
  39.                                         '(70 . 0)
  40.                                 )
  41.                         )
  42.                         (entmake '((0 . "ENDBLK")))
  43.                 )               
  44.         )
  45.         (if (setq p (getpoint))
  46.                 (progn
  47.                         (entmakeX
  48.                                 (list '(0 . "INSERT")
  49.                                         '(100 . "AcDbEntity")
  50.                                         '(100 . "AcDbBlockReference")
  51.                                         (cons 2 bn)
  52.                                         (cons 10 p)
  53.                                 )
  54.                         )
  55.                         (vl-cmdf "attsync" "n" bn)
  56.                 )               
  57.         )       
  58. )
 楼主| 发表于 2023-12-12 10:19 | 显示全部楼层
soly2006 发表于 2023-12-11 16:18
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=85342&extra=page%3D1%26filter%3Dtypeid%26typeid%3D1 ...

感谢,我研究研究
 楼主| 发表于 2023-12-12 11:05 | 显示全部楼层
bonny 发表于 2023-12-11 16:19
提供个恩特马克的例子,仅供参考

非常好的例子,能用上了,感谢
发表于 2023-12-13 08:33 | 显示全部楼层
新建空白块并进入编辑,飞诗写的。
http://bbs.mjtd.com/thread-188899-1-1.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 16:18 , Processed in 0.209114 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表