找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1641|回复: 14

[痛哭流涕的求]:"EntMake 增强属性块"编程申请

[复制链接]
发表于 2006-7-18 11:11:01 | 显示全部楼层 |阅读模式

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

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

×
目的:

通过lsp语言entmake出一个rec、一个attdef或attrib,然后再把这二个图元变成一个块。


要求:

1、当双击这个块时,不能出现refedit,而应该是“增强属性编辑器”。

2、程序能在一个DWG文件中运行多次,后面生成的块不能因为是同名块而改变前面的块(因为attdef可能会有不同的数值)。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 593个

财富等级: 财运亨通

发表于 2006-7-18 12:05:02 | 显示全部楼层
多看,尤其是“论坛精华”区。论坛上早就有过代码,下面是最近的一个
http://www.xdcad.net/forum/showthread.php?s=&threadid=562307
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2006-7-18 14:05:04 | 显示全部楼层

Re: [痛哭流涕的求]:"EntMake 增强属性块"编程申请

最初由 Dream.Fei 发布
[B]目的:

通过lsp语言entmake出一个rec、一个attdef或attrib,然后再把这二个图元变成一个块。


要求:

1、当双击这个块时,不能出现refedit,而应该是“增强属性编辑器”。

2、程序能在一个DWG文件中运?.. [/B]


先说点概念给你提个醒,用Entmake构建一个块,这里所说的块可能是两个概念,其一是 BLOCK ,其二是 INSERT ,定义时都可以包含属性,但根本是不同的,关于构建BLOCK,可以参考一下构建无名块的例子,而直接构建包含属性的INSERT,是利用了属性的一种特殊形式,可以看看2楼回帖中的一些例子。
Entmake构建的BLOCK可以像其它块一样插入,插入后的块是正常的包含属性的块,双击激活“增强属性编辑器”,而由enmake之间构建的包含属性的INSERT,属性与块实际上是“分离”的,双击只能激活“块编辑器”,好像R2007已经能识别这种“属性块”,双击不再调用“块编辑器”了。
如果构建BLOCK,后面的块必须与前面的块不同名称,对于有名称的块需要给一个算法(比如时间),对于无名块,名称由系统指定,但后期使用有一定难度。
至于直接构建INSERT,实际上是将原来不相干的块与属性结合,也应该先构建BLOCK,起名规则与构建BLOCK是相同的,优点就是属性使用起来更灵活一些。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-7-18 14:43:22 | 显示全部楼层
多谢二位老大的提醒,可是我是个新手,就是看不懂怎么做entmake block 才发这贴的啊。

我把程序发上来,你们帮我组合一下,好吗?

entmake rec (参数 ptrf ptrs ptrt ptrtxt 可以不预考虑,这是在程序运行中通过点选或是计算得出来的,没有错误,pngreno 是运行时输入的字符,估计这步有点问题,因为属性文字在做成增强块后,它会有提示让你再输入一次。)

  1. (defun entmakepngrevno ()
  2.   (setq ptrtxt (polar ptrf (angtof "30") 5))
  3.   (entmake (list
  4.              '(0 . "LWPOLYLINE")
  5.              '(100 . "AcDbEntity")
  6.              '(100 . "AcDbPolyline")
  7.              '(90 . 3)
  8.              (cons 10 ptrf)
  9.              (cons 10 ptrs)
  10.              (cons 10 ptrt)
  11.              (cons 10 ptrf)
  12.            )
  13.   )
  14.   (entmake (list
  15.              '(0 . "ATTDEF")
  16.              '(100 . "AcDbEntity")
  17.              '(100 . "AcDbText")
  18.              (cons 11 ptrtxt)
  19.              '(10 0.0 0.0 0.0)
  20.              '(40 . 3.5)
  21.              (cons 1 PngReNo)
  22.              (cons 3 PngReNo)
  23.              '(2 . "RevNo")
  24.              '(72 . 4)
  25.              '(100 . "AcDbAttributeDefinition")
  26.              '(70 . 4)
  27.            )
  28.   )
  29. )


这是我在网上找到的entmake block

  1. (defun c:MB2 (/ tmp ss ip)
  2.   (if
  3.     (and
  4.       (setq ip (getpoint "Pick Insertion Point (<0,0,0>): "))
  5.       (setq ss (ssget))
  6.     )
  7.      (progn
  8.        (entmake        (list '(0 . "BLOCK")
  9.                       '(2 . "*u")
  10.                       '(100 . "AcDbEntity")
  11.                       '(100 . "AcDbBlockBegin")
  12.                       '(70 . 1)
  13.                       (cons '10 ip)
  14.                 )
  15.        )
  16.        (setq cnt (sslength ss))
  17.        (while (>= (setq cnt (1- cnt)) 0)
  18.          (progn
  19.            (setq tmp (ssname ss cnt))
  20.            (entmake (entget tmp))
  21.            (entdel tmp)
  22.          )
  23.        )
  24.        (setq tmp (entmake '((0 . "ENDBLK"))))
  25.        (entmake (list '(0 . "INSERT") '(2 . "*u") (cons '10 ip)))
  26.      )
  27.   )
  28. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2006-7-19 15:51:17 | 显示全部楼层
你只要帮我把上面的组装起来或是写出一个更简单的就行了。我要的就是一个rec、一个attdef 做成一个增强属性块!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-20 04:42:52 | 显示全部楼层
属性块就是属性块,你一说增强属性块我就犯糊涂。。。。
[PHP]
(defun c:tt (/ tmp ss ip)
  (setq pt1  (getpoint "\n 第1点:")
        pt2  (getpoint pt1 "\n 第2点:")
        pt3  (getpoint pt2 "\n 第3点:")
        pt4  (getpoint pt3 "\n 第3点:")
        ptt  (polar pt1 (angtof "30") 50)
        ip   (getpoint "\n 块插入点:")
        attv (getstring "\n 属性值:")
        ipp  (mapcar '- ptt pt1)
        p$   "a"
        blkn (rtos (* (getvar "cdate") 1e8))
  )
  (entmake (list '(0 . "BLOCK") (cons 2 blkn) '(100 . "AcDbEntity") '(70 . 2) (cons 10 pt1)))
  (entmake (list '(0 . "LWPOLYLINE")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbPolyline")
                 '(90 . 3)
                 '(70 . 1)
                 (cons 10 pt1)
                 (cons 10 pt2)
                 (cons 10 pt3)
                 (cons 10 pt4)
           )
  )
  (entmake (list '(0 . "ATTDEF")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbText")
                 (cons 10 ptt)
                 '(40 . 350.)
                 (cons 1 "")
                 (cons 3 p$)
                 '(2 . "RevNo")
                 '(72 . 0)
                 '(100 . "AcDbattributeDefinition")
                 '(70 . 0)
           )
  )
  (entmake '((0 . "ENDBLK")))
  (entmake (list '(0 . "INSERT") (cons 2 blkn) (cons 10 ip) '(66 . 1)))
  (entmake (list '(0 . "ATTRIB")
                 '(100 . "AcDbEntity")
                 '(100 . "AcDbText")
                 (cons 10 (mapcar '+ ip ipp))
                 '(40 . 350.0)
                 (cons 1 attv)
                 '(72 . 0)
                 '(100 . "AcDbattribute")
                 '(2 . "REVNO")
                 '(70 . 0)
           )
  )
  (entmake '((0 . "SEQEND")))
  (princ)
)

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

使用道具 举报

 楼主| 发表于 2006-7-20 09:17:03 | 显示全部楼层
多谢楼上的大哥了~ 试过,可行。

但是有一个小问题,就是在输入属性值的时候,不能用回车来完成,如果直接回车的话,就不能做成块了。有办法解决吗?

另:文字的对齐 dxf 72 设成4 为什么文字会不显示呢?attdef、attrib都改成4也同样不显示。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-7-20 12:23:55 | 显示全部楼层
就是在输入属性值的时候,不能用回车来完成,
你的属性值是默认的么?
72 设成4   要添加 11 组码才行。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2006-7-21 23:05:09 | 显示全部楼层

Re: Re: [痛哭流涕的求]:"EntMake 增强属性块"编程申请

最初由 ll_j 发布
而由enmake之间构建的包含属性的INSERT,属性与块实际上是“分离”的,双击只能激活“块编辑器”,



entmake 可以生成一个"没有属性的块定义" 的"带属性的块插入"

block -->没attdef
entmake -->insert可以加入attrib

双击编辑时,由于块定义中没属性定义,所以没法打开属性编辑框
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

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

使用道具 举报

发表于 2006-11-15 21:44:28 | 显示全部楼层
上面的程序不能建立属性快,

命令: sxk
第1点:
第2点:
第3点:
第3点:
块插入点:
属性值:2
无法嵌套块定义。错误 : DXF 组不正确: (10)
命令:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-18 04:22 , Processed in 0.457252 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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