乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 78|回复: 6

[编程交流] 按多重引线样式选择多重引线

[复制链接]

3

主题

7

帖子

4

银币

初来乍到

Rank: 1

铜币
15
发表于 2022-7-5 16:31:18 | 显示全部楼层 |阅读模式
我需要选择特定多重引线样式上的所有现有多重引线,并将其更改为其他多重引线样式。
 
我已经创建了一个类似于dimension的代码,可以很好地作为示例。
________________________________________________________________
(setq dimstyle\u old(ssget“\u X”'((0“*维度”)(2。“dimstyle\u old”))
(命令“OPTCHPROP”dimstyle\u old““D”dimstyle\u new”)
________________________________________________________________
问题是:我找不到适用于多重引线的dxf组码。。。
 
非常感谢。
 
帕特里克
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 16:46:31 | 显示全部楼层
你好,帕特里克,
 
首先,欢迎来到CADTUTor。
 
其次,不幸的是,在ssget过滤器中无法使用Mleader样式,因此需要遍历选择集并收集与所需Mleader样式匹配的Mleader对象,然后在对象上执行任务。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
358
发表于 2022-7-5 17:00:19 | 显示全部楼层
由于添加了对象标注,并且多重引线对象的对象名称为多重引线,因此无法选择多重引线对象。
 
无论如何,看看下面的例程,将Mleader样式名称“Standard”更改为旧样式名称,并用新名称替换Mleader样式名称“MyStyle”。
 
我在这里张贴代码,因为这里很晚了,我需要睡觉了。
 
  1. (defun c:test  (/ sel int obj)
  2. (if (setq sel (ssget "_:L" '((0 . "MULTILEADER"))))
  3.    (repeat (setq int (sslength sel))
  4.      (setq obj (vlax-ename->vla-object (ssname sel (setq int (1- int)))))
  5.      (if (eq (vla-get-stylename obj) "Standard")
  6.        (vla-put-stylename obj "MyStyle")
  7.        )
  8.      )
  9.    )
  10. (princ)
  11. )(vl-load-com)

 
快乐的编码。
回复

使用道具 举报

106

主题

1万

帖子

101

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1299
发表于 2022-7-5 17:02:26 | 显示全部楼层
一个简单的例子是,在命令行(entget(car(entsel))上直接键入这个命令,选择一个mleader或为vl使用dumpit。lsp这两种方法都可以很快找到关于对象的答案。它并不完美,但适用于大多数直接的Autocad对象。
回复

使用道具 举报

49

主题

1246

帖子

1210

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2022-7-5 17:13:37 | 显示全部楼层
如果不一定需要LISP,则可以通过QSELECT开箱即用并在“特性”选项板中更改样式来实现这一点。
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 17:29:50 | 显示全部楼层
firefox崩溃把帖子搞砸了。
回复

使用道具 举报

56

主题

256

帖子

230

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
253
发表于 2022-7-5 17:39:26 | 显示全部楼层
  1. (getvar 'SELECTSIMILARMODE)
64是仅用于对象样式的值。
 
所以这可以写成下面这样的lisp。
问题是:
 
-运行命令时,selectsimilarmode不会保持不变
 
 
  1. ; All Objects by Filters
  2. ; Written 03/04/2017 by 3dwannab
  3. ; Some code from: http://www.cadforum.cz/cadforum_en/qaID.asp?tip=6365
  4. (defun c:QS_OBJECT_ALL_BY_FILTERS ( /
  5.    *error*
  6.    ans
  7.    cmde
  8.    os
  9.    smode
  10.    ss
  11.    )
  12. (defun *error* (errmsg)
  13.    (and acDoc (vla-EndUndoMark acDoc))
  14.    (and errmsg
  15.        (not (wcmatch (strcase errmsg) "*CANCEL*,*EXIT*"))
  16.        (princ (strcat "\n<< Error: " errmsg " >>"))
  17.        )
  18.    (setvar 'cmdecho cmde)
  19.    (setvar 'osmode os)
  20.    (setvar 'selectsimilarmode smode)
  21.    )
  22. (setq acDoc (vla-get-ActiveDocument (vlax-get-acad-object)))
  23. (or (vla-EndUndoMark acDoc) (vla-StartUndoMark acDoc))
  24. (setq cmde (getvar 'cmdecho))
  25. (setq os (getvar 'osmode))
  26. (setq smode (getvar 'selectsimilarmode))
  27. (setvar 'cmdecho 0)
  28. (setvar 'osmode 0)
  29. (initget "Colour Layer lineType linetypeScale lineWeight Plotstyle Objectstyle Name")
  30. (setq ans (getkword "\nChoose Filter Type : [Colour/Layer/lineType/linetypeScale/lineWeight/Plotstyle/Objectstyle/Name] <Layer>: "))
  31. (if (not ans) (setq ans "Layer"))
  32. (sssetfirst nil)
  33. (cond
  34.    ((=  "Colour" ans)
  35.        (setvar 'selectsimilarmode 1)
  36.        (princ "****")
  37.        )
  38.    ((=  "Layer" ans)
  39.        (setvar 'selectsimilarmode 2)
  40.        )
  41.    ((=  "lineType" ans)
  42.        (setvar 'selectsimilarmode 4)
  43.        )
  44.    ((=  "linetypeScale" ans)
  45.        (setvar 'selectsimilarmode
  46.        )
  47.    ((=  "lineWeight" ans)
  48.        (setvar 'selectsimilarmode 16)
  49.        )
  50.    ((=  "Plotstyle" ans)
  51.        (setvar 'selectsimilarmode 32)
  52.        )
  53.    ((=  "Objectstyle" ans)
  54.        (setvar 'selectsimilarmode 64)
  55.        )
  56.    ((=  "Name" ans)
  57.        (setvar 'selectsimilarmode 128)
  58.        )
  59.    )
  60. (if ans
  61.    (progn
  62.        (vl-cmdf "._selectsimilar" pause)
  63.        )
  64.    (prompt "\nNothing selected ")
  65.    )
  66. (*error* nil)
  67. (vl-load-com)
  68. (princ)
  69. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-8-21 01:59 , Processed in 2.277381 second(s), 66 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表