乐筑天下

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

[编程交流] 不按命令缩放

[复制链接]

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 11:40:04 | 显示全部楼层 |阅读模式
如何使用(命令“scale”等)缩放不带的块?提前感谢
回复

使用道具 举报

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 11:59:41 | 显示全部楼层
我目前正在尝试选择多个块,并尝试按当前的DIMSCALE缩放每个块。为了使它们保持在原来的位置,我希望每一个都以它们的插入点为基点进行缩放。我看到了李的Lisp程序,并试图修改它来完成我的任务。这就是我所拥有的,但我犯了一个错误。
 
  1. (defun c:wscale (/ i ss ent eLst)
  2. (setq wgScale (getvar "DIMSCALE"))
  3. (if (setq i -1              ;if this = T
  4.            ss (ssget "_:L"))  
  5.      (while            ;Then do this
  6.        (setq ent               
  7.           (ssname ss
  8.               (setq i (1+ i))))
  9.      
  10.      (setq eLst (entget ent))        
  11.      
  12.      (setq ePT (assoc 10 eLst))
  13.      (vl-cmdf "_.scale" ent "" ePT wgScale)
  14.    )
  15. );end if
  16. (princ))

 
我得到这个错误
回复

使用道具 举报

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 12:10:22 | 显示全部楼层
看起来我所缺少的只是一个“cdr”
 
  1. (defun c:wscale (/ i ss ent eLst)
  2. (setq wgScale (getvar "DIMSCALE"))
  3. (if (setq i -1              ;if this = T
  4.            ss (ssget "_:L"))  
  5.      (while            ;Then do this
  6.        (setq ent               
  7.           (ssname ss
  8.               (setq i (1+ i))))
  9.      
  10.      (setq eLst (entget ent))        
  11.      
  12.      (setq ePT [color=Red](cdr[/color] (assoc 10 eLst))[color=Red])[/color]
  13.      (vl-cmdf "_.scale" ent "" ePT wgScale)
  14.    )
  15. );end if
  16. (princ))

 
我想(assoc…)将返回x,y,z,但它返回(10 x,y,z),这使命令行失败。
 
我将为这个问题添加第二部分。我想键入命令,让LISP选择图形中的所有块,其块名包含单词“PART”。
 
与此同时,我正在四处寻找答案。我想我必须过滤(0。“INSERT”)和(2。”*part“)不要认为我可以在那里使用星号,但你可以看到我的逻辑。
回复

使用道具 举报

78

主题

207

帖子

129

银币

后起之秀

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

铜币
395
发表于 2022-7-6 12:24:37 | 显示全部楼层
我知道这是我自己和我之间的对话,但我想可能有人在读这篇文章
 
无论如何,我注意到在块的DXF代码中有x、y和z比例因子。我想我会尝试更改这些值,而不是使用命令行。
回复

使用道具 举报

13

主题

126

帖子

114

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
65
发表于 2022-7-6 12:28:33 | 显示全部楼层
我不确定您到底想做什么,但您可以使用快速选择来选择所有块类型,然后修改属性x、y、z比例吗?
 
格伦
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 12:43:01 | 显示全部楼层
例子:
 
  1. (defun c:wscale  (/ i ss ent eLst scl)
  2. (and (zerop (setq scl (getvar "DIMSCALE")))
  3.       (setq scl 1.0))
  4. (if (setq i  -1 ss (ssget "_:L" '((0 . "INSERT"))))
  5.    (while (setq ent (ssname ss (setq i (1+ i))))
  6.      (setq eLst (entget ent))
  7.      (mapcar
  8.        (function
  9.          (lambda (x)
  10.            (setq eLst (subst (cons x scl)
  11.                              (assoc x eLst) eLst)))) '(41 42 43))
  12.      (entmod eLst)))
  13. (princ))
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-6 02:14 , Processed in 0.365135 second(s), 64 queries .

© 2020-2025 乐筑天下

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