乐筑天下

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

[编程交流] lisp用于更改多段线宽度

[复制链接]

57

主题

246

帖子

247

银币

后起之秀

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

铜币
233
发表于 2022-7-5 16:33:11 | 显示全部楼层 |阅读模式
我需要修改我找到的lisp:http://forums.augi.com/showthread.php?133428-块内的多段线宽度
 
将嵌套块中的多段线宽度更改为0的步骤
 
(定义c:pib(/秒)
(vl load com)
(princ“\n选择具有多段线的块”)
(if(and(setq s(ssget“+:s”((0。“insert”)))
(setq s(cdr(assoc 2(entget(ssname s 0Ю)Ю))))
) ;_  和
(程序
(vlax代表
o
(vla项目(vla get blocks
(vla get ActiveDocument(vlax get acad object))
) ;_  vla获取块
s
) ;_  vla项目
;;(setq o(vla item(vla item(vla get blocks(vla get ActiveDocument(vlax get acad object)))s)0)
(if(=(vla get objectname o)“AcDbPolyline”)
(vl catch all apply‘vla put ConstantWidth(列表0))
) ;_  如果
) ;_  vlax for
(foreach x(mapcar(功能cadr))
(ssnamex(ssget“_x”(列表(cons 2 s)))
) ;_  地图车
(vla更新(vlax ename->vla对象x))
) ;_  foreach公司
) ;_  程序
) ;_  如果
(普林斯)
)  
 
 
但是我想处理嵌套块,有可能吗?
 
谢谢
回复

使用道具 举报

10

主题

8258

帖子

8335

银币

初来乍到

Rank: 1

铜币
31
发表于 2022-7-5 16:49:46 | 显示全部楼层
有两件事你可能已经说过了,但值得重复。
 
1.如果已知(在本例中是已知的),由您以外的其他人编写的代码应归于发起者,在本例中是Lee Mac。
2.论坛中发布的代码,除非是代码的图像,否则应包含在代码标签中。
 
如果你不明白,那就去问。
回复

使用道具 举报

57

主题

246

帖子

247

银币

后起之秀

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

铜币
233
发表于 2022-7-5 17:05:24 | 显示全部楼层
对不起,如果我省略了代码作者的名字:
 
代码由:Lee Mac编写
 
代码:
(defun c:polywidthzero(/doc)(vlax表示块(vla get blocks(setq doc(vla get activedocument(vlax get acad object))))(if(eq:vlax false(vla get isxref block))(vlax表示obj块(if(eq“AcDbPolyline”(vla get objectname obj))(vl catch all apply‘vla put constantwidth(list obj 0)))))(vla regen doc acallviewports)(princ))(vl load com)(princ)
回复

使用道具 举报

4

主题

2143

帖子

2197

银币

限制会员

铜币
-24
发表于 2022-7-5 17:27:55 | 显示全部楼层
请阅读代码发布指南,并编辑代码以包含在代码标签中。[NOPARSE]
  1. Your Code Here[/NOPARSE]
=
  1. Your Code Here
回复

使用道具 举报

57

主题

246

帖子

247

银币

后起之秀

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

铜币
233
发表于 2022-7-5 17:40:34 | 显示全部楼层
[/NOPARSE][/code]=
  1. (defun c:pib (/ s)
  2. (vl-load-com)
  3. (princ "\n Select the block with a polyline")
  4. (if (and (setq s (ssget "_+.:S" '((0 . "insert"))))
  5.          (setq s (cdr (assoc 2 (entget (ssname s 0)))))
  6.     ) ;_  and
  7. (progn
  8.   (vlax-for
  9.            o
  10.            (vla-item (vla-get-blocks
  11.                       (vla-get-ActiveDocument (vlax-get-acad-object))
  12.                      ) ;_  vla-get-blocks
  13.                      s
  14.            ) ;_  vla-item
  15.    ;;(setq o (vla-item (vla-item (vla-get-blocks (vla-get-ActiveDocument(vlax-get-acad-object))) s)0))
  16.    (if (= (vla-get-objectname o) "AcDbPolyline")
  17.     (vl-catch-all-apply 'vla-put-ConstantWidth (list o 0.))
  18.    ) ;_  if
  19.   ) ;_  vlax-for
  20.   (foreach x (mapcar (function cadr)
  21.                      (ssnamex (ssget "_x" (list (cons 2 s))))
  22.              ) ;_  mapcar
  23.    (vla-update (vlax-ename->vla-object x))
  24.   ) ;_  foreach
  25. ) ;_  progn
  26. ) ;_  if
  27. (princ)
  28. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-14 15:43 , Processed in 1.207031 second(s), 73 queries .

© 2020-2025 乐筑天下

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