明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 322|回复: 3

[函数] 分享-创建Mline多线

[复制链接]
发表于 前天 14:05 | 显示全部楼层 |阅读模式
本帖最后由 zgs378530220 于 2025-6-6 11:59 编辑

(defun NewMLine (StrName / mlinei fastElement lastElement numList substrings newStr mlineNum mlineLeixing mlinelist)
;子程序:创建多线MLINE
;例句:(NewMLine "40*40*3方管");注意字符格式
        (defun vl-string-split (fenge Str)
        (setq result '())
        (while (> (strlen str) 0)
                (setq pos (vl-string-search fenge str))
                (if pos (progn (setq part (substr str 1 pos)) (setq str (substr str (+ pos 2)))) (progn (setq part str) (setq str "")))
                (setq result (cons part result))
        )
        (setq result (reverse result))
        result
        )
        (if (null StrName) exit)
        (setq mlinestyle_list (dictsearch (namedobjdict) "ACAD_MLINESTYLE"))
        (setq t_mline_style_name (strcase (vl-string-translate "*" "X" StrName)))
        (if (vl-position t_mline_style_name (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 3)) mlinestyle_list))) exit)
        (setq substrings '("方管" "圆管" "角钢" "槽钢" "H钢"))
        (setq mlinei 0)(setq mlineNum 5)
        (while (< mlinei (length substrings))
                (if (vl-string-search (nth mlinei substrings) t_mline_style_name)
                        (progn
                                (setq mlineLeixing (nth mlinei substrings))
                                (setq newStr (vl-string-subst "" mlineLeixing t_mline_style_name))
                                (if (= mlineLeixing "角钢") (setq mlineNum 3))
                                (setq mlinei (length substrings))
                        )
                        (setq mlinei (1+ mlinei))
                )
        )
        (if (= newStr "") exit)
        (setq numList (mapcar 'atof (vl-string-split "X" newStr)))
        (setq fastElement (nth 0 numList))
        (setq lastElement (nth (- (length numList) 1) numList))
        (setq mlinelist
                (list
                        (cons 0 "MLINESTYLE") (cons 100 "AcDbMlineStyle") (cons 2 t_mline_style_name) (cons 70 272) (cons 71 mlineNum)
                        (cons 49 (/ fastElement -2.0000)) (cons 62 256) (cons 6 "Bylayer")
                        (cons 49 (- lastElement (/ fastElement 2.0000))) (cons 62 256) (cons 6 "ACAD_ISO02W100")
                        (cons 49 (/ fastElement 2.0000)) (cons 62 256) (cons 6 "Bylayer")
                )
        )
        (if (> mlineNum 3) (setq mlinelist (append mlinelist (list (cons 49 0.0) (cons 62 1) (cons 6 "CENTER") (cons 49 (- (/ fastElement 2.0000) lastElement)) (cons 62 256) (cons 6 "ACAD_ISO02W100")))))
        (dictadd (cdar mlinestyle_list) t_mline_style_name (entmakex mlinelist))
)
加载以上代码后
命令行执行以下语句,就可以示例多线:
(setq xcjm "40*40*3方管")(NewMLine xcjm)(vl-cmdf "_.mline" "st" (vl-string-translate "*" "X" xcjm) "s" 1 "J" "T" '(0 0 0) '(500 500 0) "")

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +5 收起 理由
tigcat + 1 + 5 很给力!

查看全部评分

回复

使用道具 举报

发表于 8 小时前 | 显示全部楼层
可以按需画不同规格的龙骨吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 6 小时前 | 显示全部楼层
1165617649 发表于 2025-6-6 10:07
可以按需画不同规格的龙骨吗

可以啊,上面代码中substrings增加类型,后面cons中按照自己型材修改就可以了
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-6-6 18:41 , Processed in 0.178544 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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