本帖最后由 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)))
- (dictadd MLEADERSTYLE-Dict "SDH-LJXH66" (entmakex MLEADERSTYLE-LST))
- )
- )
- (if
- (member '(3 . "SDH-LJXH66") MLEADERSTYLE00)
- (progn
- (entget(cdr(cadr(member '(3 . "SDH-LJXH66") MLEADERSTYLE00))));
- )
- )
- ;cadr 返回列表第二个元素
- ;cdr 返回去掉第一个元素后的列表。但注意若为点对表,则返回第二个元素
- ;(princ)
- )
|