乐筑天下

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

[编程交流] 更改尺寸保持

[复制链接]

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 11:34:24 | 显示全部楼层 |阅读模式
从这里来
 
http://discussion.autodesk.com/forums/thread.jspa?threadID=764691
 
我只是想发布这个,以防有人知道这是否可能。。。
 
我测试了附加的例程,以根据当前的dimstyle设置更改尺寸,但保留了它们的“Dimscale”(或尺寸大小),但我认为如果能够同时保留它们的dimstyle名称,将当前dimstyle设置的其余部分更新为一组选定的尺寸,那将是一件很棒的事情。。。
 
有人对此有想法吗?
dimup。lsp
回复

使用道具 举报

15

主题

209

帖子

121

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
163
发表于 2022-7-6 11:51:18 | 显示全部楼层
 
当然有可能::wink:
 
您可以使用:
  1. (setq t1 (entget (entsel "select")))

 
要获取选定dim的实体列表,可以使用以下选项:
  1. (setq t1 (subst (cons 8 "1") (assoc 8 t1) t1 ))

修改dims图元列表的任何部分(这将更改图层)
 
然后使用:
  1. (entmod t1)

修改实体。
 
以下是DXF代码及其含义的列表:
 
*此列表用于标注样式,而不是标注图元*
  1. (cons 2 StyleName); Dimstyle name
  2. (cons 70 0); Standard flag
  3. (cons 3 ""); DIMPOST
  4. (cons 4 ""); DIMAPOST
  5. (cons 5 "_Oblique"); DIMBLK
  6. (cons 6 "_Oblique"); DIMBLK1
  7. (cons 7 ""); DIMBLK2
  8. (cons 40 StyleScale); DIMSCALE
  9. (cons 41 0.0937); DIMASZ
  10. (cons 42 0.0937); DIMEXO
  11. (cons 43 0.38); DIMDLI
  12. (cons 44 0.0625); DIMEXE
  13. (cons 45 0.0); DIMRND
  14. (cons 46 0.0625); DIMDLE
  15. (cons 47 0.0); DIMTP
  16. (cons 48 0.0); DIMTM
  17. (cons 140 0.0937); DIMTXT
  18. (cons 141 0.09); DIMCEN
  19. (cons 142 0.0); DIMTSZ
  20. (cons 143 25.4); DIMALTF
  21. (cons 144 1.0); DIMLFAC
  22. (cons 145 0.0); DIMTVP
  23. (cons 146 1.0); DIMTFAC
  24. (cons 147 0.0625); DIMGAP
  25. (cons 71 0); DIMTOL
  26. (cons 72 0); DIMLIM
  27. (cons 73 0); DIMTIH
  28. (cons 74 0); DIMTOH
  29. (cons 75 0); DIMSE1
  30. (cons 76 0); DIMSE2
  31. (cons 77 1); DIMTAD
  32. (cons 78 3); DIMZIM
  33. (cons 170 0); DIMALT
  34. (cons 171 2); DIMALTD
  35. (cons 172 0); DIMTOFL
  36. (cons 173 0); DIMSAH
  37. (cons 174 0); DIMTIX
  38. (cons 175 0); DIMSOXD
  39. (cons 176 0); DIMCLRD
  40. (cons 177 0); DIMCLRE
  41. (cons 178 2); DIMCRRT
  42. (cons 270 4); DIMUNIT
  43. (cons 271 4); DIMDEC
  44. (cons 272 4); DIMTDEC
  45. (cons 273 2); DIMALTU
  46. (cons 274 2); DIMALTTD
  47. (cons 275 0); DIMAUNIT
  48. (cons 276 2); DIM?????
  49. (cons 277 4); DIMLUNIT
  50. (cons 279 2); DIM????
  51. (cons 280 0); DIMJUST
  52. (cons 281 0); DIMSD1
  53. (cons 282 0); DIMSD2
  54. (cons 283 1); DIMTOLJ
  55. (cons 284 0); DIMTZIN
  56. (cons 285 0); DIMALTZ
  57. (cons 286 0); DIMALTTZ
  58. (cons 287 5); DIMFIT
  59. (cons 288 0); DIMUPT
  60. ; DIMTXSTY
  61. (cons 340 (tblobjname "style" TextStyle))
  62. ; DIMLDRBLK
  63. (cons 342 (cdr        (assoc 330 (entget(tblobjname "block" "_Oblique")))))
  64. ; DIMLDRBLK1
  65. (cons 343 (cdr        (assoc 330 (entget(tblobjname "block" "_Oblique")))))
  66. ; DIMLDRBLK2 Block for the leader
  67. (cons 341 (cdr        (assoc 330 (entget(tblobjname "block" "")))))

 
这应该让你开始。
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 12:08:29 | 显示全部楼层
太棒了我知道我在这里做了些什么。。。。
 
  1. ;;Routine to change all dimensions to the current dimstyle preserving
  2. their dimscale and dimstyle name
  3. (defun c:dimes2 ()
  4. (setq ss1 (ssget "X" (list (cons 0 "dimension"))))
  5. (setq SSLEN (sslength SS1))
  6. (setq sscnt 0 sspr (1+ sscnt))
  7. (repeat sslen
  8. (prompt (strcat "\nProcessing " (itoa SSPR) " of " (itoa SSLEN) " dimensions."))
  9. (setq EN (ssname SS1 SSCNT))
  10. ;set dimscale
  11. (command "dimscale" (vla-get-ScaleFactor (vlax-ename->vla-object EN)))
  12. (COMMAND "DIM1" "UPDATE" EN "")
  13. (setq sscnt (1+ sscnt) SSPR (1+ sscnt))
  14. );r
  15. (princ)
  16. );d
  17. ;;Another code
  18. (PRINC
  19.    "\nSelect Dimensions and text to apply the background fill and update...: "
  20. )
  21. (AND (SETQ ss (SSGET "_:L" '((0 . "*DIMENSION*"))))
  22.       (FOREACH x (VL-REMOVE-IF 'LISTP (MAPCAR 'CADR (SSNAMEX ss)))
  23. (COND
  24.    ((EQ "DIMENSION" (CDR (ASSOC 0 (SETQ elist (ENTGET x)))))
  25.     (SETQ elist (SUBST (CONS 340 (tblobjname "style" TextStyle)) (ASSOC 340 elist) elist)
  26.     ) ;_ setq
  27.     (ENTMOD elist)
  28.    (T T)
  29. ) ;_ cond
  30.       ) ;_ foreach
  31. ) ;_ and

 
此代码(键入dimes2)出现“输入时列表格式错误”错误,但将当前图形中的所有维度重命名为当前dimstyle名称,保留了它们自己的变量。。。。我需要的恰恰相反。。。保留Dimscale和dimstyle名称,但更新所有变量。。。
 
实际上,我试图更新的唯一变量是Dimtfill。。。。
 
有谁愿意帮忙吗?
--------------------------------
好像我的头颠倒了。。。
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 12:14:01 | 显示全部楼层
我认为添加这样的东西可能会管用。。。但显然不起作用。。。。
 
  1. ;;Routine to change all dimensions to the current dimstyle preserving the dimscale and dimstyle name for each dimension
  2. ;;;make sure to set the dimstyle you require as current before running this routine
  3. (defun c:dimes3 ()
  4. (setq ss1 (ssget "X" (list (cons 0 "dimension"))))
  5. (setq SSLEN (sslength SS1))
  6. (setq sscnt 0 sspr (1+ sscnt))
  7. (repeat sslen
  8. (prompt (strcat "\nProcessing " (itoa SSPR) " of " (itoa SSLEN) " dimensions."))
  9. (setq EN (ssname SS1 SSCNT))
  10. ;set dimscale
  11. (command "dimscale" (vla-get-ScaleFactor (vlax-ename->vla-object EN)))
  12. [color=red](command "dimstyle" (cdr (assoc 40 (tblsearch "DIMSTYLE" (dxf 3 EN)))))[/color]
  13. (COMMAND "DIM1" "UPDATE" EN "")
  14. (setq sscnt (1+ sscnt) SSPR (1+ sscnt))
  15. );r
  16. (princ)
  17. );d
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 12:27:20 | 显示全部楼层
这是设置dimstyle(从特定对象还原)的例程的一部分。。。。但我不知道如何将其插入我的代码中。。。
 
  1.      (command ".DIMSTYLE" "R" (cdr (assoc 3 EntList@)))
  2.      (setq DimStyle@ (tblsearch "STYLE" (getvar "DIMTXSTY")))
回复

使用道具 举报

29

主题

196

帖子

168

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
145
发表于 2022-7-6 12:41:44 | 显示全部楼层
 
嘿,蒂姆。。。。你知道我可以为Dimtfill使用什么“(cons”代码吗?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

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

© 2020-2025 乐筑天下

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