构建圆圈零件序号的标准多重引线样式定义(请大师答疑)
本帖最后由 sdh123321 于 2025-3-15 18:07 编辑CAD,本身可以定义圆圈多重引线样式,最终效果见下图,附cad图中样例
优点:似乎自带反应器,改动夹点位置,线自动拉长,线始终对准圆圈中心。
其设置方法:菜单-格式-多重引线样式。按如下设置内容,可实现上面最终引线样式的截图效果
通过如下代码,计划实现自定义引线样式,对比组码和设置项,效果绝大数与设置一致,但有3处错误,上图中红圈中的位置的(上图设置是正确的,但定义无法定义)分别对应组码 (340 . <图元名: 1e38c4ff950>); 引线类型 ID
(341 . <图元名: 1e38b9e9db0>) ;箭头 ID
'(343 . <图元名: 1e38ba753a0>);块内容 ID,
向大家交流学习,若定义中涉及其它图元名是怎么获取这些图元名的?望大师解惑
下图代码中,可更改cad对象类型字符和相应组码,也可以轻松用于自定义文字样式等非图形对象
(defun MLEADERSTYLE-SDH-LJXH
(
/
MLEADERSTYLE-Lst
MLEADERSTYLE00
MLEADERSTYLE-Dict
)
(setq MLEADERSTYLE-LST
(list
'(0 . "MLEADERSTYLE")
'(102 . "{ACAD_REACTORS")
'(102 . "}")
'(100 . "AcDbMLeaderStyle")
'(179 . 0); MLEADERSTYLE(DXF)组码中无179,不知道什么意思. 通用组码是文字附着点
'(170 . 1);内容类型
'(171 . 1);绘制多重引线次序类型
'(172 . 0) ;绘制引线次序类型
'(90 . 0) ;最大引线线段点
'(40 . 0.0) ;第一线段角度约束
'(41 . 0.0) ;第二线段角度约束
'(173 . 1);引线类型
'(91 . -1023410170) ;引线颜色
;'(340 . <图元名: 1e38c4ff950>); 引线类型 ID
'(92 . -1) ;引线线宽
'(290 . 1);启用基线
'(42 . 2.0);基线间隙
'(291 . 0) ;启用基线
'(43 . 0.36);基线长度
'(3 . "Standard")
;'(341 . <图元名: 1e38b9e9db0>) ;箭头 ID
;'(71 . 0) ;; 无用 LEADER的组码71,箭头标志:0 = 禁用;1 = 启用
'(44 . 0.0) ;;箭头大小
'(300 . "") ;默认多行文字内容
;'(342 . <图元名: 1e38c4ff910>); 多行文字样式ID
'(174 . 1) ;文字左附着样式
'(178 . 6);文字连接位置类型-右
'(175 . 1);文字角度类型
'(176 . 0);文字对齐类型
'(93 . -1056964608) ;文字颜色
'(45 . 4.0) ;文字高度
'(292 . 0) ;启用文字边框
'(297 . 0);文字始终左对齐
'(46 . 4.0);对齐空间
;'(343 . <图元名: 1e38ba753a0>);块内容 ID
'(94 . -1023410170) ;块内容颜色
'(47 . 1.0) ;X轴上的块内容比例
'(49 . 1.0) ;Y轴上的块内容比例
'(140 . 1.0);Z轴上的块内容比例
'(293 . 1) ;启用块内容比例
'(141 . 0.0) ;块内容旋转
'(294 . 1) ;启用块内容旋转
'(177 . 1) ;块内容连接类型
'(142 . 1.0);比例
'(295 . 0) ;覆盖特性值
'(296 . 0) ;注释性
'(143 . 0.0) ;打断间距大小
'(271 . 0) ;多行文字内容的文字附着方向:0 = 水平,1= 垂直
'(272 . 9);底部文字附着方向:9 = 居中,10 = 下划线并居中
'(273 . 9);顶部文字附着方向:
'(298 . 0); MLEADERSTYLE(DXF)组码中无298,不知道什么意思.AI查询 0显示对象1不显示对象
)
)
(setq MLEADERSTYLE00 (dictsearch(namedobjdict) "ACAD_MLEADERSTYLE"))
;返回:
;;;((-1 . <图元名: 2b398af0690>) (0 . "DICTIONARY") (5 . "1E9") (102 . "{ACAD_REACTORS") (330 . <图元名: 2b398ae90c0>) (102 . "}") (330 . <图元名: 2b398ae90c0>)
;;;(100 . "AcDbDictionary") (280 . 0) (281 . 1)
;;;(3 . "SDH-LJXH") (350 . <图元名: 2b39a0b5d40>)
;;;(3 . "SDH-WZSM") (350 . <图元名: 2b39a0b5d50>)
;;;(3 . "Standard") (350 . <图元名: 2b398aee0a0>))
(if
(null(member '(3 . "SDH-LJXH66") MLEADERSTYLE00))
(progn
(setq MLEADERSTYLE-Dict (cdr(assoc -1 MLEADERSTYLE00)))
(dictaddMLEADERSTYLE-Dict "SDH-LJXH66" (entmakex MLEADERSTYLE-LST))
)
)
(if
(member '(3 . "SDH-LJXH66") MLEADERSTYLE00)
(progn
(entget(cdr(cadr(member '(3 . "SDH-LJXH66") MLEADERSTYLE00))));
)
)
;cadr返回列表第二个元素
;cdr 返回去掉第一个元素后的列表。但注意若为点对表,则返回第二个元素
;(princ)
)
查找资料大半夜,已解决。通过mleaderstyle词典的方法,增加一个mleaderstyle的obj对象,然后对该obj对象设定属性值的方式解决。
设定值,可从对话框中已经定义好的样式,反向查找属性,获取设定值。
理想状态:程序自己自定义mleaderstyle,依据自动生成的零件个别坐标,自动生成mleader对象并顺序自动赋值零件序号,自动弹窗填写材料明细表的DCL窗口,自动生成明细表。
目标实现:特定专业画图程序启动后,自动画图同时,自动标记零件序号,自动生成明细表。 http://bbs.mjtd.com/thread-189611-1-1.html
页:
[1]