乐筑天下

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

[编程交流] 修改动态块XYZ比例

[复制链接]

56

主题

346

帖子

68

银币

中流砥柱

Rank: 25

铜币
512
发表于 2022-7-5 23:28:57 | 显示全部楼层 |阅读模式
修改X、Y和Z比例因子。
 
有一个动态块,可以通过“属性”对话框修改XYZ比例因子!
002903d12g7cowwincosxn.png
但我使用lisp修改xyz比例因子,存在一个问题。
002907hgnhfhhhfn7hni1n.png
 
谢谢你的帮助!心存感激
002908ej9js9j3zw55hh8w.png
xyscl。lsp
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:42:52 | 显示全部楼层
因此,文本是一个动态块,您希望通过将其缩放到X=2.0、Y=2.0和Z=1.0来重新定位它?
回复

使用道具 举报

56

主题

346

帖子

68

银币

中流砥柱

Rank: 25

铜币
512
发表于 2022-7-5 23:51:04 | 显示全部楼层
 
是的,使用lisp,文本比例不变。
图纸1.dwg
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 23:55:45 | 显示全部楼层
我无法在您的属性块上尝试代码,因为名称是用未知语言写入我的系统的,所以无论如何,请尝试并告诉我。
 
  1. (defun c:Test (/ u x y z s sn i e l v ls ent o nx)
  2. ;;    Tharwat 02. March. 2014    ;;
  3. (setq u (entlast))
  4. (if (and (setq x (getdist "\n Specify New scale factor for < X > :"))
  5.           (setq y (getdist "\n Specify New scale factor for < Y > :"))
  6.           (setq z (getdist "\n Specify New scale factor for < Z > :"))
  7.           (progn (princ "\n Select Attributed Blocks to rescale ")
  8.                  (setq s (ssget "_:L" '((0 . "INSERT") (66 . 1))))
  9.           )
  10.      )
  11.    (repeat (setq i (sslength s))
  12.      (setq e (entget (setq sn (ssname s (setq i (1- i)))))
  13.            v nil
  14.            l (cdr (assoc 8 e))
  15.            v (mapcar '(lambda (a) (cons (vla-get-tagstring a) (vla-get-textstring a)))
  16.                      (vlax-invoke (setq o (vlax-ename->vla-object sn)) 'getattributes)
  17.              )
  18.      )
  19.      (command "_.-insert" (vla-get-effectivename o) "_none" (cdr (assoc 10 e)) "xyz" x y z "0")
  20.      (if (not (eq u (setq ls (entlast))))
  21.        (progn (entmod (subst (cons 8 l) (assoc 8 (entget ls)) (entget ls)))
  22.               (setq nx ls)
  23.               (while (and (setq nx (entnext nx)) (/= (cdr (assoc 0 (entget nx))) "SEQEND"))
  24.                 (if (eq (cdr (assoc 0 (setq ent (entget nx)))) "ATTRIB")
  25.                   (foreach j v
  26.                     (if (eq (car j) (cdr (assoc 2 ent)))
  27.                       (entmod (subst (cons 1 (cdr j)) (assoc 1 ent) ent))
  28.                     )
  29.                   )
  30.                 )
  31.               )
  32.               (entdel sn)
  33.        )
  34.      )
  35.    )
  36. )
  37. (princ)
  38. )
  39. (vl-load-com)
回复

使用道具 举报

56

主题

346

帖子

68

银币

中流砥柱

Rank: 25

铜币
512
发表于 2022-7-6 00:01:39 | 显示全部楼层
 
Tharwat,非常感谢!很好!但不支持正常块。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:09:36 | 显示全部楼层
 
不客气。
 
 
使用普通块要容易得多。。。
 
  1. (defun c:Test (/ u x y z s sn i e l ls ent nx)
  2. ;;    Tharwat 02. March. 2014    ;;
  3. (setq u (entlast))
  4. (if (and (setq x (getdist "\n Specify New scale factor for < X > :"))
  5.           (setq y (getdist "\n Specify New scale factor for < Y > :"))
  6.           (setq z (getdist "\n Specify New scale factor for < Z > :"))
  7.           (progn (princ "\n Select Blocks to rescale ")
  8.                  (setq s (ssget "_:L" '((0 . "INSERT"))))
  9.           )
  10.      )
  11.    (repeat (setq i (sslength s))
  12.      (setq e (entget (setq sn (ssname s (setq i (1- i)))))
  13.            l (cdr (assoc 8 e))
  14.      )
  15.      (command "_.-insert"
  16.               (vla-get-effectivename (vlax-ename->vla-object sn))
  17.               "_none"
  18.               (cdr (assoc 10 e))
  19.               "xyz"
  20.               x
  21.               y
  22.               z
  23.               "0"
  24.      )
  25.      (if (/= u (setq ls (entlast)))
  26.        (progn
  27.          (entmod (subst (cons 8 l) (assoc 8 (entget ls)) (entget ls))
  28.          )
  29.          (entdel sn)
  30.        )
  31.      )
  32.    )
  33. )
  34. (princ)
  35. )
  36. (vl-load-com)
回复

使用道具 举报

56

主题

346

帖子

68

银币

中流砥柱

Rank: 25

铜币
512
发表于 2022-7-6 00:16:36 | 显示全部楼层
现在,可以支持正常块。但动态块有问题。更改动态块后。缺少动态块的文本
此外,只需输入一次刻度值。不需要输入3次。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-6 00:24:49 | 显示全部楼层
 
第一个lisp也用于属性块和动力学,第二个lisp用于普通块。
回复

使用道具 举报

56

主题

346

帖子

68

银币

中流砥柱

Rank: 25

铜币
512
发表于 2022-7-6 00:35:18 | 显示全部楼层
 
非常感谢。塔尔瓦特。
没有别的办法了。
xyscl。lsp可以更改正常块。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-11 00:05 , Processed in 0.993386 second(s), 73 queries .

© 2020-2025 乐筑天下

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