找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3196|回复: 15

[求助] [求助]:如何用LISP编制创建带属性块的程序?

[复制链接]
发表于 2002-9-5 14:00:28 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如何用LISP编制创建带属性块的程序?
谢谢.
应该是用ENTMAKE函数吧?!
望高手指点!
最好有一个程序为例!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2002-9-7 19:25:04 | 显示全部楼层
我也不知道。哈哈,一起等高手回答吧。
顺便借这个地方问一问:无名块可不可以带属性?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-9-9 12:44:21 | 显示全部楼层
;;;转贴自明经通道 http://www.mjtd.com/bbs/
;;;生成带属性的匿名块。

  1. (defun C:MBA ()
  2.   (entmake
  3.     '((0 . "block") (2 . "*U") (70 . 1) (10 0.0 0.0 0.0))
  4.   )
  5.   (entmake '((0 . "CIRCLE")
  6.              (100 . "AcDbEntity")
  7.              (67 . 0)
  8.              (8 . "0")
  9.              (100 . "Circle")
  10.              (10 0.7 1.2 0.0)
  11.              (40 . 21)
  12.              (210 0.0 0.0 1.0)
  13.             )
  14.   )
  15.   (entmake '((0 . "ATTDEF")
  16.              (100 . "AcDbEntity")
  17.              (67 . 0)
  18.              (8 . "0")
  19.              (100 . "AcDbText")
  20.              (10 -2.4 -1.0 0.0)
  21.              (40 . 2.5)
  22.              (1 . "0")
  23.              (50 . 0.0)
  24.              (41 . 1.0)
  25.              (51 . 0.0)
  26.              (7 . "STANDARD")
  27.              (71 . 0)
  28.              (72 . 5)
  29.              (11 0.0 0.0 0.0)
  30.              (210 0.0 0.0 1.0)
  31.              (100 . "AcDbAttributeDefinition")
  32.              (3 . "请输入属性")
  33.              (2 . "属性")
  34.              (70 . 0)
  35.              (73 . 0)
  36.              (74 . 0)
  37.             )
  38.   )
  39.   (setq BLKN (entmake '((0 . "ENDBLK"))))
  40.   (setq        LST0 '((0 . "INSERT")
  41.                (100 . "AcDbEntity")
  42.                (67 . 0)
  43.                (8 . "0")
  44.                (100 . "AcDbBlockReference")
  45.                (66 . 1)
  46.                (10 0.0 0.0 0.0)
  47.                (41 . 1.0)
  48.                (42 . 1.0)
  49.                (43 . 1.0)
  50.                (50 . 0.0)
  51.                (70 . 0)
  52.                (71 . 0)
  53.                (44 . 0.0)
  54.                (45 . 0.0)
  55.                (210 0.0 0.0 1.0)
  56.               )
  57.   )
  58.   (setq LST1 (append LST0 (list (cons 2 BLKN))))
  59.   (entmake LST1)
  60.   (entmake '((0 . "ATTRIB")
  61.              (5 . "26")
  62.              (100 . "AcDbEntity")
  63.              (67 . 0)
  64.              (8 . "0")
  65.              (100 . "AcDbText")
  66.              (10 -2.4 -1.0 0.0)
  67.              (40 . 2.5)
  68.              (1 . "123")
  69.              (50 . 0.394791)
  70.              (41 . 0.445714)
  71.              (51 . 0.0)
  72.              (7 . "STANDARD")
  73.              (71 . 0)
  74.              (72 . 5)
  75.              (11 0.0 0.0 0.0)
  76.              (210 0.0 0.0 1.0)
  77.              (100 . "AcDbAttribute")
  78.              (2 . "属性")
  79.              (70 . 0)
  80.              (73 . 0)
  81.              (74 . 0)
  82.             )
  83.   )
  84.   (entmake '((0 . "SEQEND")))
  85. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-9-9 15:30:16 | 显示全部楼层
用entmake做块很累,r12时archtlt的几个制图符号(如剖切号等)都是
这样做的,程序长且繁。建议你作块还是用block+insert,省事得多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2002-11-1 16:21:07 | 显示全部楼层
如何用block+insert作块?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2002-11-1 18:00:49 | 显示全部楼层
最初由 luln 发布
[B]如何用block+insert作块? [/B]


就是要命令交互做. BLOCK命令和INSERT命令.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2002-11-2 01:19:05 | 显示全部楼层
贴一段标注程序中的代码,注意蓝色组码。


  1. (defun $yb_mkattrib        (p str $angle code1 code2 tf)
  2.       (list (cons 0
  3.                   (if tf
  4.                     "ATTDEF"
  5.                     "ATTRIB"
  6.                   )
  7.             )
  8.             '(100 . "AcDbEntity")
  9.             '(67 . 0)                        ;模型空间
  10.             '(8 . "0")                        ;图层
  11.             '(100 . "AcDbText")
  12.             (cons 10 p)                        ;文字起点
  13.             (cons 40 (* 2.5 #bl))        ;字高
  14.             (cons 1 str)                ;缺省值
  15.             (CONS 100
  16.                   (IF TF
  17.                     "AcDbAttributeDefinition"
  18.                     "AcDbAttribute"
  19.                   )
  20.             )
  21.             (cons 2 (substr str 1 1))
  22.             '(70 . 0)
  23.             '(73 . 0)
  24.             (cons 50 ($ea_fmtang $angle)) ;旋转角
  25.             '(41 . 0.75)                ;宽度因子
  26.             '(51 . 0.0)                        ;倾角
  27.             '(7 . "yb_zbbz")                ;字体样式
  28.             '(71 . 0)                        ;文字生成标志
  29.             (cons 72 code1)
  30.             (cons 74 code2)
  31.             (cons 11
  32.                   (if (/= (+ code1 code2) 0)
  33.                     p
  34.                     '(0.0 0.0 0.0)
  35.                   )
  36.             )                                ;对齐点
  37.             '(210 0.0 0.0 1.0)                ;拉伸方向
  38.             (if        tf
  39.               (cons 3 (substr str 1 1))
  40.             )
  41.       )
  42.     )
  43.     (entmake
  44.       (list '(0 . "block") '(2 . "*U") '[color=blue](70 . 67)[/color] (cons 10 p1))
  45.     )
  46.     (entmake (list '(0 . "LWPOLYLINE")
  47.                    '(100 . "AcDbEntity")
  48.                    '(8 . "0")
  49.                    '(100 . "AcDbPolyline")
  50.                    '(90 . 3)
  51.                    (cons 10 p1)
  52.                    (cons 10 p2)
  53.                    (cons 10 pt3)
  54.                    '(210 0.0 0.0 1.0)
  55.              )
  56.     )
  57.     (entmake (drop ($ea_mkattrib pa2 px $angle 0 0 T) nil))
  58.     (entmake (drop ($ea_mkattrib pa3 py $angle 0 3 T) nil))
  59.     (setq blkn (entmake '((0 . "ENDBLK"))))
  60.     ;;引用块
  61.     (setq lst0 (list '(0 . "INSERT")
  62.                      '(100 . "AcDbEntity")
  63.                      (cons 8 (getvar "clayer"))
  64.                      '(100 . "AcDbBlockReference")
  65.                      '(66 . 1)
  66.                      (cons 10 p1)
  67.                      '(41 . 1.0)
  68.                      '(42 . 1.0)
  69.                      '(43 . 1.0)
  70.                      '(50 . 0.0)
  71.                      '(70 . 0)
  72.                      '(71 . 0)
  73.                      '(44 . 0.0)
  74.                      '(45 . 0.0)
  75.                      '(210 0.0 0.0 1.0)
  76.                )
  77.     )
  78.     (setq lst1 (append lst0 (list (cons 2 blkn))))
  79.     (entmake lst1)
  80.     (entmake (drop ($yb_mkattrib pa2 px $angle 0 0 nil) nil))
  81.     (entmake (drop ($yb_mkattrib pa3 py $angle 0 3 nil) nil))
  82.     (entmake '((0 . "SEQEND")))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-28 16:50:36 | 显示全部楼层
三楼,为何是这样的?
命令: (LOAD "C:/Documents and Settings/Bluewater/桌面/MBA.LSP") C:MBA

命令: MBA ((0 . "SEQEND"))
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-28 20:11:21 | 显示全部楼层
你到Vlisp中格式排一下,可能是上传时漏了括号之类。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-7-30 14:49:41 | 显示全部楼层
楼上的兄台,我试了,还是不行呀。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-5 14:20:36 | 显示全部楼层
是的,3楼的程序是不能执行。和4楼说道俄显像一样
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-6 12:57:52 | 显示全部楼层
一樣代表正常,屬性塊就在0,0處
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-7 11:32:43 | 显示全部楼层
请问3楼的属性块为什么不能用鼠标双击后修改属性值,用attdef定义的属性块是可以的,能不能改进以下?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-7 18:11:51 | 显示全部楼层
无法编辑块属性嘛??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-12-14 14:06:30 | 显示全部楼层
;;改一下即可!
(entmake
    '((0 . "block") (2 . "*U") (70 . 3) (10 0.0 0.0 0.0)) ;(70 . 1)雙擊編輯無效
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-5-4 17:48 , Processed in 0.403983 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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