明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 22728|回复: 58

[【风之影】] [源码]明细表,逐步添加程序

  [复制链接]
发表于 2012-4-8 16:59:47 | 显示全部楼层 |阅读模式
本帖最后由 cabinsummer 于 2016-12-24 15:06 编辑


文字库功能


图形库功能


智能交互标号

  近期在开发明细表程序,为了与公司原有的程序兼容,增加了不少难度。这个过程中也学到不少东西,感谢Chen QJ一直以来的大力支持。现在将思路奉献出来,供大家提些建议。
  程序开发要满足人操作的方便性,这个是最主要的。因此程序必须有库并且具有导向性,让新人能很快适应。
  明细表由“序号”、“代号”、“名称”、和“备注”几项构成。在实际生产过程中,图纸存在大量的复用,这样带来的工艺流程也完全不一样,因此不能简单的将分为加工件和采购件两类。我根据实际情况,将明细分为:



  明细表必须对此做出区分,以方便后期人员的操作。分类是个麻烦的事,无论交给设计人员还是交给物料管理人员。尤其是当大量写入表格时总难免不了出错。因此要有常用的文字库便于选择,有常用的图形库且能从中提取信息直接提供给明细表。
  仿公司国外的习惯,引出的标号如下图:


  说明一下,圆圈类的都是要出图的;分叉上线是双线的表明此号为部件,有下级装配图和明细;单线是配图的;分叉单线是采购用的,根据集团内部组织方式,填写略有区别。程序采用属性块加扩展数据。
  由此,定义操作的数据结构,先定义构成数据结构的几个基本函数
  1. ;;;属性块
  2. (defun BOM_BLOCK (BlockName)
  3.   (entmake (list '(0 . "BLOCK")'(10 0.0 0.0 0.0)'(70 . 2)(cons 2 BlockName)))
  4. )
  5. ;;;圆
  6. (defun BOM_CIRCLE (CenterPoint Radius)
  7.   (entmake (list '(0 . "CIRCLE")'(100 . "AcDbEntity")'(8 . "0")'(100 . "AcDbCircle")(cons 10 Centerpoint)(cons 40 Radius)))
  8. )
  9. ;;;直线
  10. (defun BOM_LINE (StartPoint EndPoint)
  11.   (entmake (list '(0 . "LINE")'(100 . "AcDbEntity")'(8 . "0")'(100 . "AcDbLine")(cons 10 StartPoint)(cons 11 EndPoint)))
  12. )
  13. ;;;属性定义
  14. (defun BOM_ATTDEF (Height Value Width TextStyle Horizontal AlignPoint Pmpt Tag Visibility Vertical)
  15.   (entmake
  16.     (list
  17.       '(0 . "ATTDEF")
  18.       '(100 . "AcDbEntity")
  19.       '(8 . "TEXT")
  20.       '(100 . "AcDbText")
  21.       '(10 0.0 0.0 0.0)
  22.       (cons 40 Height)
  23.       (cons 1 Value)
  24.       (cons 41 Width)
  25.       (cons 7 TextStyle)
  26.       (cons 72 Horizontal)
  27.       (cons 11 AlignPoint)
  28.       '(100 . "AcDbAttributeDefinition")
  29.       (cons 3 Pmpt)
  30.       (cons 2 Tag)
  31.       (cons 70 Visibility)
  32.       (cons 74 Vertical)
  33.     )
  34.   )
  35. )
  36. ;;;小圆点引线
  37. (defun BOM_LEADER (StartPoint Endpoint AssocBlock)
  38.   (entmake
  39.     (list
  40.       '(0 . "LEADER")
  41.       '(100 . "AcDbEntity")
  42.       '(8 . "DIM")
  43.       '(100 . "AcDbLeader")
  44.       '(71 . 1)
  45.       '(73 . 2)
  46.       '(74 . 0)
  47.       '(76 . 2)
  48.       (cons 10 StartPoint)
  49.       (cons 10 Endpoint)
  50.       (cons 340 AssocBlock)
  51.       (list -3
  52.             (list "ACAD"
  53.                   (cons 1000 "DSTYLE")
  54.                   (cons 1002 "{")
  55.                   (cons 1070 341)
  56.                   (cons 1005 (cdr (assoc 5 (entget (cdr (assoc 330 (entget (tblobjname "block" "_dotsmall"))))))))
  57.                   (cons 1002 "}")
  58.             )
  59.       )
  60.     )
  61.   )
  62. )
  63. ;;;块属性
  64. (defun BOM_ATTRIB (Height Value Width TextStyle Horizontal AlignPoint Tag Visibility Vertical)
  65.   (entmake
  66.     (list
  67.       '(0 . "ATTRIB")
  68.       '(100 . "AcDbEntity")
  69.       '(8 . "TEXT_ENGLISH")
  70.       '(100 . "AcDbText")
  71.       '(10 0.0 0.0 0.0)
  72.       (cons 40 (* Height scl))
  73.       (cons 1 Value)
  74.       (cons 41 Width)
  75.       (cons 7 TextStyle)
  76.       (cons 72 Horizontal)
  77.       (cons 11 AlignPoint)
  78.       '(100 . "AcDbAttribute")
  79.       (cons 2 Tag)
  80.       (cons 70 Visibility)
  81.       (cons 74 Vertical)
  82.     )
  83.   )
  84. )

  标号有左右方向,为防止镜像后文字难以识别,特定义八种属性块
  1. ;;;定义出图类的标号形式,插入点在左侧
  2. (if (not (tblsearch "BLOCK" "DTL-L"))
  3.   (progn
  4.     (BOM_BLOCK "DTL-L")
  5.     (BOM_CIRCLE '(13.0 0.0 0.0) 8.0)
  6.     (BOM_ATTDEF 4.5 "00" 1.0 "BOLD" 4 '(13.0 0.0 0.0) "Detail number" "CODE_ID" 0 0)
  7.     (BOM_ATTDEF 2.5 "" 1.0 "STANDARD" 4 '(13.0 -6.0 0.0) "Description" "DESCR" 1 0)
  8.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(2.5 1.0 0.0) "Amount" "AMT" 0 0)
  9.     (BOM_ATTDEF 2.5 "N" 1.0 "STANDARD" 4 '(13.0 6.0 0.0) "Spare part" "SPARE_PART" 1 0)
  10.     (BOM_LINE '(5.0 0.0 0.0)'(0.0 0.0 0.0))
  11.     (entmake '((0 . "ENDBLK")))
  12.   )
  13. )
  14. ;;;定义出图类的标号形式,插入点在右侧
  15. (if (not (tblsearch "BLOCK" "DTL-R"))
  16.   (progn
  17.     (BOM_BLOCK "DTL-R")
  18.     (BOM_CIRCLE '(-13.0 0.0 0.0) 8.0)
  19.     (BOM_ATTDEF 4.5 "00" 1.0 "BOLD" 4 '(-13.0 0.0 0.0) "Detail number" "CODE_ID" 0 0)
  20.     (BOM_ATTDEF 2.5 "" 1.0 "STANDARD" 4 '(-13.0 -6.0 0.0) "Description" "DESCR" 1 0)
  21.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(-2.5 1.0 0.0) "Amount" "AMT" 0 0)
  22.     (BOM_ATTDEF 2.5 "N" 1.0 "STANDARD" 4 '(-13.0 6.0 0.0) "Spare part" "SPARE_PART" 1 0)
  23.     (BOM_LINE '(-5.0 0.0 0.0)'(0.0 0.0 0.0))
  24.     (entmake '((0 . "ENDBLK")))
  25.   )
  26. )
  27. ;;;定义采购类的标号形式,插入点在左侧
  28. (if (not (tblsearch "BLOCK" "STD-L"))
  29.   (progn
  30.     (BOM_BLOCK "STD-L")
  31.     (BOM_ATTDEF 4.0 "" 1.0 "BOLD" 2 '(94.0 5.0 0.0) "Standard Code #" "CODE_ID" 0 1)
  32.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 2 '(94.0 -5.0 0.0) "Description #1" "DESCR_1" 0 1)
  33.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 2 '(94.0 -10.0 0.0) "Description #2" "DESCR_2" 0 1)
  34.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(2.5 1.0 0.0) "Amount" "AMT" 0 0)
  35.     (BOM_ATTDEF 2.5 "" 0.85 "STANDARD" 1 '(-2.5 -3.5 0.0) "Spare part" "SPARE_PART" 1 0)
  36.     (BOM_LINE '(5.0 0.0 0.0)'(0.0 0.0 0.0))
  37.     (BOM_LINE '(5.0 5.0 0.0)'(5.0 -5.0 0.0))
  38.     (BOM_LINE '(5.0 5.0 0.0)'(95.0 5.0 0.0))
  39.     (BOM_LINE '(5.0 -5.0 0.0)'(95.0 -5.0 0.0))
  40.     (entmake '((0 . "ENDBLK")))
  41.   )
  42. )
  43. ;;;定义采购类的标号形式,插入点在右侧
  44. (if (not (tblsearch "BLOCK" "STD-R"))
  45.   (progn
  46.     (BOM_BLOCK "STD-R")
  47.     (BOM_ATTDEF 4.0 "" 1.0 "BOLD" 0 '(-94.0 5.0 0.0) "Standard Code #" "CODE_ID" 0 1)
  48.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 0 '(-94.0 -5.0 0.0) "Description #1" "DESCR_1" 0 1)
  49.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 0 '(-94.0 -10.0 0.0) "Description #2" "DESCR_2" 0 1)
  50.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(-2.5 1.0 0.0) "Amount" "AMT" 0 0)
  51.     (BOM_ATTDEF 2.5 "" 0.85 "STANDARD" 1 '(-2.5 -3.5 0.0) "Spare part" "SPARE_PART" 1 0)
  52.     (BOM_LINE '(-5.0 0.0 0.0)'(0.0 0.0 0.0))
  53.     (BOM_LINE '(-5.0 5.0 0.0)'(-5.0 -5.0 0.0))
  54.     (BOM_LINE '(-5.0 5.0 0.0)'(-95.0 5.0 0.0))
  55.     (BOM_LINE '(-5.0 -5.0 0.0)'(-95.0 -5.0 0.0))
  56.     (entmake '((0 . "ENDBLK")))
  57.   )
  58. )
  59. ;;;定义配图类的标号形式,插入点在左侧
  60. (if (not (tblsearch "BLOCK" "IDT-L"))
  61.   (progn
  62.     (BOM_BLOCK "IDT-L")
  63.     (BOM_ATTDEF 4.0 "" 1.0 "BOLD" 2 '(70.0 0.0 0.0) "Included detail #" "CODE_ID" 0 1)
  64.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(2.5 1.0 0.0) "Amount" "AMT" 0 0)
  65.     (BOM_LINE '(0.0 0.0 0.0)'(70.0 0.0 0.0))
  66.     (entmake '((0 . "ENDBLK")))
  67.   )
  68. )
  69. ;;;定义配图类的标号形式,插入点在右侧
  70. (if (not (tblsearch "BLOCK" "IDT-R"))
  71.   (progn
  72.     (BOM_BLOCK "IDT-R")
  73.     (BOM_ATTDEF 4.0 "" 1.0 "BOLD" 0 '(-70.0 0.0 0.0) "Included detail #" "CODE_ID" 0 1)
  74.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(-2.5 1.0 0.0) "Amount" "AMT" 0 0)
  75.     (BOM_LINE '(0.0 0.0 0.0)'(-70.0 0.0 0.0))
  76.     (entmake '((0 . "ENDBLK")))
  77.   )
  78. )
  79. ;;;定义部件类的标号形式,插入点在左侧
  80. (if (not (tblsearch "BLOCK" "ASM-L"))
  81.   (progn
  82.     (BOM_BLOCK "ASM-L")
  83.     (BOM_ATTDEF 4.0 "" 1.0 "BOLD" 2 '(94.0 5.0 0.0) "Included Assembly #" "CODE_ID" 0 1)
  84.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 2 '(94.0 -5.0 0.0) "Description #1" "DESCR_1" 0 1)
  85.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 2 '(94.0 -10.0 0.0) "Description #2" "DESCR_2" 0 1)
  86.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(2.5 1.0 0.0) "Amount" "AMT" 0 0)
  87.     (BOM_LINE '(5.0 0.0 0.0)'(0.0 0.0 0.0))
  88.     (BOM_LINE '(5.0 5.0 0.0)'(5.0 -5.0 0.0))
  89.     (BOM_LINE '(5.0 5.0 0.0)'(95.0 5.0 0.0))
  90.     (BOM_LINE '(5.0 4.0 0.0)'(95.0 4.0 0.0))
  91.     (BOM_LINE '(5.0 -5.0 0.0)'(95.0 -5.0 0.0))
  92.     (entmake '((0 . "ENDBLK")))
  93.   )
  94. )
  95. ;;;定义部件类的标号形式,插入点在右侧
  96. (if (not (tblsearch "BLOCK" "ASM-R"))
  97.   (progn
  98.     (BOM_BLOCK "ASM-R")
  99.     (BOM_ATTDEF 4.0 "" 1.0 "BOLD" 0 '(-94.0 5.0 0.0) "Included Assembly #" "CODE_ID" 0 1)
  100.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 0 '(-94.0 -5.0 0.0) "Description #1" "DESCR_1" 0 1)
  101.     (BOM_ATTDEF 3.0 "" 0.9 "BOLD" 0 '(-94.0 -10.0 0.0) "Description #2" "DESCR_2" 0 1)
  102.     (BOM_ATTDEF 2.5 "1" 0.85 "STANDARD" 1 '(-2.5 1.0 0.0) "Amount" "AMT" 0 0)
  103.     (BOM_LINE '(-5.0 0.0 0.0)'(0.0 0.0 0.0))
  104.     (BOM_LINE '(-5.0 5.0 0.0)'(-5.0 -5.0 0.0))
  105.     (BOM_LINE '(-5.0 5.0 0.0)'(-95.0 5.0 0.0))
  106.     (BOM_LINE '(-5.0 4.0 0.0)'(-95.0 4.0 0.0))
  107.     (BOM_LINE '(-5.0 -5.0 0.0)'(-95.0 -5.0 0.0))
  108.     (entmake '((0 . "ENDBLK")))
  109.   )
  110. )

未完待续……

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
669423907 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下

本帖被以下淘专辑推荐:

 楼主| 发表于 2012-4-8 17:26:58 | 显示全部楼层
定义如此复杂的数据结构,主要是为了和公司原有的习惯相结合。如果全新的思路,必然所有的属性块都用相同的属性,这样便于后期处理。公司里的标准块里不同类型含有数量不等的属性,因为在没有程序编辑的情况下,双击属性块最简单,含有大量的无用的属性反而会带来操作上的失误。为此程序增加了不少难度,但是对于表处理,也有很多值得学习的技巧。
发表于 2012-4-8 18:44:21 来自手机 | 显示全部楼层
楼主好样的,奉献出来的都是源码,超赞!
你的局部放大我就很喜欢,只要是你的帖子,都必须顶!!!!
发表于 2012-4-8 19:27:23 | 显示全部楼层
要是采购材料,怎能没有“尺寸"这一栏呢。建议加上这一项。

点评

我按公司习惯开发。如果你要另有需求,可以根据原理自行开发  发表于 2012-4-8 19:41
发表于 2012-4-8 20:51:43 | 显示全部楼层
风之影,好样的。和你学了很多的知识。
赞一个!!!!
发表于 2012-4-8 22:13:07 | 显示全部楼层
公司图纸标准用语,公司形象也提高一截
发表于 2012-4-8 22:30:08 | 显示全部楼层
精神可嘉!
非常支持!
发表于 2012-4-8 23:48:59 | 显示全部楼层
MIMUSI标准件,我有用这个外挂,不过是UG的,
发表于 2012-4-9 09:02:02 | 显示全部楼层
看不到图片,是不是挂掉了
 楼主| 发表于 2012-4-9 20:21:41 | 显示全部楼层
本帖最后由 cabinsummer 于 2012-4-9 21:00 编辑

今天再来几个通用函数。说明一下,由于公司内部的块属性不足,所以我添加了扩展数据,所以本程序是属性块和扩展数据混合编程。另外,受CHEN QJ的影响,决定对编程中常用(repeat (sslength ss)采取改进,因为这是LISP中较为低级的方法,高级的应该发挥LISP表处理的优势,大量使用mapcar、apply、lambda和foreach等特有的函数,不但能使程序精练,而且执行速度大大提高。一般对选择集的操作就是选取、添加、删除等,还有就是提取选择集中某个图元,低级的就是针对某个图元操作反复用repeat,既难懂也容易出错,所以我这次将以表处理为主,在以后的编程中将大量使用LISP的高效函数。

  1. ;;;定义对齐点
  2. (defun algpnt (PNT VEC)
  3.   (mapcar '+ PNT (list (* scl (car VEC)) (* scl (cadr VEC)) 0.0))
  4. )

  5. ;;;插入属性块DTL-L
  6. (defun INS_DTL-L (PNT CODE DESCR AMT SPARE)
  7.   (INS_ATT_BLK "DTL-L" PNT)
  8.   (BOM_ATTRIB 4.5 CODE 1.0 "BOLD" 4 (algpnt PNT '(13.0 0.0 0.0)) "CODE_ID" 0 0)
  9.   (BOM_ATTRIB 2.5 DESCR 1.0 "STANDARD" 4 (algpnt PNT '(13.0 -6.0 0.0)) "DESCR" 1 0)
  10.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(2.5 1.0 0.0)) "AMT" 0 0)
  11.   (BOM_ATTRIB 2.5 SPARE 1.0 "STANDARD" 4 (algpnt PNT '(13.0 6.0 0.0)) "SPARE_PART" 1 0)
  12.   (entmake '((0 . "SEQEND")))
  13. )

  14. ;;;插入属性块DTL-R
  15. (defun INS_DTL-R (PNT CODE DESCR AMT SPARE)
  16.   (INS_ATT_BLK "DTL-R" PNT)
  17.   (BOM_ATTRIB 4.5 CODE 1.0 "BOLD" 4 (algpnt PNT '(-13.0 0.0 0.0)) "CODE_ID" 0 0)
  18.   (BOM_ATTRIB 2.5 DESCR 1.0 "STANDARD" 4 (algpnt PNT '(-13.0 -6.0 0.0)) "DESCR" 1 0)
  19.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(-2.5 1.0 0.0)) "AMT" 0 0)
  20.   (BOM_ATTRIB 2.5 SPARE 1.0 "STANDARD" 4 (algpnt PNT '(-13.0 6.0 0.0)) "SPARE_PART" 1 0)
  21.   (entmake '((0 . "SEQEND")))
  22. )

  23. ;;;插入属性块STD-L
  24. (defun INS_STD-L (PNT CODE DESCR_1 DESCR_2 AMT SPARE)
  25.   (INS_ATT_BLK "STD-L" PNT)
  26.   (BOM_ATTRIB 4.0 CODE 1.0 "BOLD" 2 (algpnt PNT '(94.0 5.0 0.0)) "CODE_ID" 0 1)
  27.   (BOM_ATTRIB 3.0 DESCR_1 0.9 "BOLD" 2 (algpnt PNT '(94.0 -5.0 0.0)) "DESCR_1" 0 1)
  28.   (BOM_ATTRIB 3.0 DESCR_2 0.9 "BOLD" 2 (algpnt PNT '(94.0 -10.0 0.0)) "DESCR_2" 0 1)
  29.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(2.5 1.0 0.0)) "AMT" 0 0)
  30.   (BOM_ATTRIB 2.5 SPARE 0.85 "STANDARD" 1 (algpnt PNT '(2.5 -3.5 0.0)) "SPARE_PART" 1 0)
  31.   (entmake '((0 . "SEQEND")))
  32. )

  33. ;;;插入属性块STD-R
  34. (defun INS_STD-R (PNT CODE DESCR_1 DESCR_2 AMT SPARE)
  35.   (INS_ATT_BLK "STD-R" PNT)
  36.   (BOM_ATTRIB 4.0 CODE 1.0 "BOLD" 0 (algpnt PNT '(-94.0 5.0 0.0)) "CODE_ID" 0 1)
  37.   (BOM_ATTRIB 3.0 DESCR_1 0.9 "BOLD" 0 (algpnt PNT '(-94.0 -5.0 0.0)) "DESCR_1" 0 1)
  38.   (BOM_ATTRIB 3.0 DESCR_2 0.9 "BOLD" 0 (algpnt PNT '(-94.0 -10.0 0.0)) "DESCR_2" 0 1)
  39.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(-2.5 1.0 0.0)) "AMT" 0 0)
  40.   (BOM_ATTRIB 2.5 SPARE 0.85 "STANDARD" 1 (algpnt PNT '(-2.5 -3.5 0.0)) "SPARE_PART" 1 0)
  41.   (entmake '((0 . "SEQEND")))
  42. )

  43. ;;;插入属性块IDT-L
  44. (defun INS_IDT-L (PNT CODE AMT)
  45.   (INS_ATT_BLK "IDT-L" PNT)
  46.   (BOM_ATTRIB 4.0 CODE 1.0 "BOLD" 2 (algpnt PNT '(70.0 0.0 0.0)) "CODE_ID" 0 1)
  47.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(2.5 1.0 0.0)) "AMT" 0 0)
  48.   (entmake '((0 . "SEQEND")))
  49. )

  50. ;;;插入属性块IDT-R
  51. (defun INS_IDT-R (PNT CODE AMT)
  52.   (INS_ATT_BLK "IDT-R" PNT)
  53.   (BOM_ATTRIB 4.0 CODE 1.0 "BOLD" 0 (algpnt PNT '(-70.0 0.0 0.0)) "CODE_ID" 0 1)
  54.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(-2.5 1.0 0.0)) "AMT" 0 0)
  55.   (entmake '((0 . "SEQEND")))
  56. )

  57. ;;;插入属性块ASM-L
  58. (defun INS_ASM-L (PNT CODE DESCR_1 DESCR_2 AMT)
  59.   (INS_ATT_BLK "ASM-L" PNT)
  60.   (BOM_ATTRIB 4.0 CODE 1.0 "BOLD" 2 (algpnt PNT '(94.0 5.0 0.0)) "CODE_ID" 0 1)
  61.   (BOM_ATTRIB 3.0 DESCR_1 0.9 "BOLD" 2 (algpnt PNT '(94.0 -5.0 0.0)) "DESCR_1" 0 1)
  62.   (BOM_ATTRIB 3.0 DESCR_2 0.9 "BOLD" 2 (algpnt PNT '(94.0 -10.0 0.0)) "DESCR_2" 0 1)
  63.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(2.5 1.0 0.0)) "AMT" 0 0)
  64.   (entmake '((0 . "SEQEND")))
  65. )

  66. ;;;插入属性块ASM-R
  67. (defun INS_ASM-R (PNT CODE DESCR_1 DESCR_2 AMT)
  68.   (INS_ATT_BLK "ASM-R" PNT)
  69.   (BOM_ATTRIB 4.0 CODE 1.0 "BOLD" 0 (algpnt PNT '(-94.0 5.0 0.0)) "CODE_ID" 0 1)
  70.   (BOM_ATTRIB 3.0 DESCR_1 0.9 "BOLD" 0 (algpnt PNT '(-94.0 -5.0 0.0)) "DESCR_1" 0 1)
  71.   (BOM_ATTRIB 3.0 DESCR_2 0.9 "BOLD" 0 (algpnt PNT '(-94.0 -10.0 0.0)) "DESCR_2" 0 1)
  72.   (BOM_ATTRIB 2.5 AMT 0.85 "STANDARD" 1 (algpnt PNT '(-2.5 1.0 0.0)) "AMT" 0 0)
  73.   (entmake '((0 . "SEQEND")))
  74. )

  75. ;;;插入属性块
  76. (defun INS_ATT_BLK (BlockName PNT)
  77.   (entmake (list '(0 . "INSERT")(cons 2 BlockName)'(8 . "DIM")'(66 . 1)(cons 10 PNT)(cons 41 scl)(cons 42 scl)))
  78. )

  79. ;;;提取选择集中的所有图元名
  80. (defun ss->entlist (SelectionSet / n entlist)
  81.   (setq n 0)
  82.   (repeat (setq n (sslength SelectionSet))
  83.     (setq entlist (cons (ssname SelectionSet (setq n (1- n))) entlist))
  84.   )
  85. )

  86. ;;;提取图元的DXF组码
  87. (defun entdxf (ename dxf)
  88.   (cdr (assoc dxf (entget ename)))
  89. )

  90. ;;;提取表中所有图元的某个DXF组码
  91. (defun entlist->dxflist (entlist dxf)
  92.   (mapcar '(lambda (x) (entdxf x dxf)) entlist)
  93. )

  94. ;;;获得应用程序app附加于图元的扩展数据
  95. (defun GET_XDATA (ename app)
  96.   (cdadr (assoc -3 (entget ename (list (eval app)))))
  97. )

  98. ;;;删除应用程序app附加于图元的扩展数据
  99. (defun REM_XDATA (ename app / edata)
  100.   (if (assoc -3 (setq edata (entget ename (list (eval app)))))(entmod (subst (list -3 (list (eval app))) (assoc -3 edata) edata)))
  101. )

  102. ;;;添加应用程序app附加于图元的扩展数据
  103. (defun ADD_XDATA (ename app xdata)
  104.   (setq edata (GET_XDATA ename app))
  105.   (entmod (append (entget ename) (list (list -3 (cons (eval app) (append edata (list (cons 1000 xdata))))))))
  106. )

未完待续

评分

参与人数 5明经币 +5 收起 理由
zctao1966 + 1 很给力!
lidaxiu + 1
VBALISPER + 1 赞一个!
1993063 + 1 赞一个!
菡萏 + 1 赞一个!

查看全部评分

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

本版积分规则

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

GMT+8, 2024-11-23 11:19 , Processed in 0.201081 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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