乐筑天下

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

[编程交流] 更改DimScale,但使用Tolra

[复制链接]

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 15:05:26 | 显示全部楼层 |阅读模式
你好
 
我对可变的DimScale和Tolernaces有问题。
 
  1. (defun c:bf (/ Faktor)
  2. (alert " Achtung     Toleranzen werden entfernt")
  3. (initget 7)
  4. (setq Faktor (getreal "\nBemaßungsfaktor: "))
  5. (setvar "dimscale" Faktor)
  6. (setvar "mleaderscale" Faktor)
  7. (princ "\nBemaßung auswählen")
  8. (setq DimObject (ssget "X" '((0 . "DIMENSION,MULTILEADER"))))
  9. (command "._-DimStyle" "_A" DimObject "")
  10. (vl-load-com)
  11. (if (ssget "_x" '((0 . "MULTILEADER")))
  12.    (vlax-for item
  13.              (setq
  14.                ss (vla-get-activeSelectionSet
  15.                     (vla-get-activedocument (Vlax-get-acad-object))
  16.                   )
  17.              )
  18.      (if (eq (vla-get-Stylename item) "M1_T70")
  19.        (vl-catch-all-apply 'vla-put-scalefactor (list item Faktor))
  20.      )
  21.    )
  22. )
  23. )

 
我从另一个论坛得到了这个代码。
此代码用于更改DimScale,但如果我有一个带有公差的标注,则在刷新后它们会消失。
 
我想要的:
 
获得带有公差的尺寸→ 保存公差值
更改尺寸比例
刷新后,将公差放在原来的位置。可能是指暗值。
 
idk它是如何完成的。
 
有人能帮我解决我的问题吗?
 
非常感谢。
回复

使用道具 举报

18

主题

1529

帖子

973

银币

中流砥柱

Rank: 25

铜币
649
发表于 2022-7-5 15:46:52 | 显示全部楼层
尝试:
  1. (defun KGA_Conv_Pickset_To_EnameList (ss / i ret)
  2. (if ss
  3.    (repeat (setq i (sslength ss))
  4.      (setq ret (cons (ssname ss (setq i (1- i))) ret))
  5.    )
  6. )
  7. )
  8. ; (KGA_List_Divide_2 '(0 1 2 3 4 5 6 7 8 9)) => ((0 1) (2 3) (4 5) (6 7) (8 9))
  9. ; (KGA_List_Divide_2 '(0 1 2 3 4 5 6 7 )   => ((0 1) (2 3) (4 5) (6 7))
  10. (defun KGA_List_Divide_2 (lst / ret)
  11. (repeat (/ (length lst) 2)
  12.    (setq ret (cons (list (car lst) (cadr lst)) ret))
  13.    (setq lst (cddr lst))
  14. )
  15. (reverse ret)
  16. )
  17. ; The function assumes the "ACAD" Xdata for dimensions only contains "DSTYLE" items.
  18. (defun c:OverrideScale ( / dat doc elst scl ss)
  19. (setq doc (vla-get-activedocument (vlax-get-acad-object)))
  20. (vla-endundomark doc)
  21. (vla-startundomark doc)
  22. (initget 7)
  23. (if
  24.    (and
  25.      (setq scl (getreal "\nScale: "))
  26.      (setq ss (ssget "_:L" '((0 . "DIMENSION,MULTILEADER"))))
  27.    )
  28.    (foreach enm (KGA_Conv_Pickset_To_EnameList ss)
  29.      (setq elst (entget enm '("ACAD")))
  30.      (if
  31.        (vl-position '(0 . "DIMENSION") elst)
  32.        (progn
  33.          (setq dat
  34.            (append
  35.              '(
  36.                (1000 . "DSTYLE")
  37.                (1002 . "{")
  38.              )
  39.              ; Remove (1000 . "DSTYLE"), (1002 . "{"), (1002 . "}") and existing scale override data:
  40.              (apply
  41.                'append
  42.                (vl-remove-if
  43.                  '(lambda (sub) (equal (car sub) '(1070 . 40)))
  44.                  (cdr (KGA_List_Divide_2 (cdadr (assoc -3 elst))))
  45.                )
  46.              )
  47.              (list
  48.                '(1070 . 40)
  49.                (cons 1040 scl)
  50.                '(1002 . "}")
  51.              )
  52.            )
  53.          )
  54.          (regapp "ACAD")
  55.          (entmod
  56.            (list
  57.              (cons -1 enm)
  58.              (list -3 (cons "ACAD" dat))
  59.            )
  60.          )
  61.        )
  62.        (vla-put-scalefactor (vlax-ename->vla-object enm) scl)
  63.      )
  64.    )
  65. )
  66. (vla-endundomark doc)
  67. (princ)
  68. )
回复

使用道具 举报

2

主题

6

帖子

4

银币

初来乍到

Rank: 1

铜币
10
发表于 2022-7-5 16:09:44 | 显示全部楼层
真 的!
 
谢谢你,罗伊!
 
非常适合我的需要。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-15 00:51 , Processed in 2.866034 second(s), 58 queries .

© 2020-2025 乐筑天下

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