乐筑天下

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

[编程交流] 帮助加速我编写的代码

[复制链接]

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 16:06:14 | 显示全部楼层 |阅读模式
大家早上好!
 
我编写了所有这些代码,将所有文本从一个标准更改为defpoints(一个不同的标准),只需按下一个按钮,即可完整地翻译所有层。不过,根据图形的大小,运行大约需要30-45秒。我知道这一切都是重复的,所以也许有另一种方法可以更快地做到这一点?
 
这是我从头开始写的第一段代码!所以我还在学习。谢谢你的建议。
 
  1. (defun c:QFIXtest ()
  2. (setq sset (ssget "x" '((8 . "STRUCTURES")(0 . "TEXT,MTEXT,*LEADER"))))
  3. (command ".chprop" sset "" "c" "bylayer" "")
  4. (command ".chprop" sset "" "la" "Defpoints" "")
  5. (setq sset1 (ssget "x" '((8 . "TOWER")(0 . "TEXT,MTEXT,*LEADER"))))
  6. (command ".chprop" sset1 "" "c" "bylayer" "")
  7. (command ".chprop" sset1 "" "la" "Defpoints" "")
  8. (setq sset2 (ssget "x" '((8 . "FENCE")(0 . "TEXT,MTEXT,*LEADER"))))
  9. (command ".chprop" sset2 "" "c" "bylayer" "")
  10. (command ".chprop" sset2 "" "la" "Defpoints" "")
  11. (setq sset3 (ssget "x" '((8 . "LEASED_AREA")(0 . "TEXT,MTEXT,*LEADER"))))
  12. (command ".chprop" sset3 "" "c" "bylayer" "")
  13. (command ".chprop" sset3 "" "la" "Defpoints" "")
  14. (setq sset4 (ssget "x" '((8 . "PROPOSED")(0 . "TEXT,MTEXT,*LEADER"))))
  15. (command ".chprop" sset4 "" "c" "bylayer" "")
  16. (command ".chprop" sset4 "" "la" "Defpoints" "")
  17. (setq sset5 (ssget "x" '((8 . "LANDSCAPING")(0 . "TEXT,MTEXT,*LEADER"))))
  18. (command ".chprop" sset5 "" "c" "bylayer" "")
  19. (command ".chprop" sset5 "" "la" "Defpoints" "")
  20. (setq sset6 (ssget "x" '((8 . "LEVEL")(0 . "TEXT,MTEXT,*LEADER"))))
  21. (command ".chprop" sset6 "" "c" "bylayer" "")
  22. (command ".chprop" sset6 "" "la" "Defpoints" "")
  23. (setq sset7 (ssget "x" '((8 . "ANTENNA_MOUNTS")(0 . "TEXT,MTEXT,*LEADER"))))
  24. (command ".chprop" sset7 "" "c" "bylayer" "")
  25. (command ".chprop" sset7 "" "la" "Defpoints" "")
  26. (setq sset8 (ssget "x" '((8 . "ANTENNA")(0 . "TEXT,MTEXT,*LEADER"))))
  27. (command ".chprop" sset8 "" "c" "bylayer" "")
  28. (command ".chprop" sset8 "" "la" "Defpoints" "")
  29. (setq sset9 (ssget "x" '((8 . "DIMENSIONS")(0 . "TEXT,MTEXT,*LEADER"))))
  30. (command ".chprop" sset9 "" "c" "bylayer" "")
  31. (command ".chprop" sset9 "" "la" "Defpoints" "")
  32. (setq sset10 (ssget "x" '((8 . "ANTENNA_PROPOSED")(0 . "TEXT,MTEXT,*LEADER"))))
  33. (command ".chprop" sset10 "" "c" "bylayer" "")
  34. (command ".chprop" sset10 "" "la" "Defpoints" "")
  35. (setq sset11 (ssget "x" '((8 . "MOUNTS_PROPOSED")(0 . "TEXT,MTEXT,*LEADER"))))
  36. (command ".chprop" sset11 "" "c" "bylayer" "")
  37. (command ".chprop" sset11 "" "la" "Defpoints" "")
  38. (setq sset12 (ssget "x" '((8 . "PROPERTY_LINES")(0 . "TEXT,MTEXT,*LEADER"))))
  39. (command ".chprop" sset12 "" "c" "bylayer" "")
  40. (command ".chprop" sset12 "" "la" "Defpoints" "")
  41. (setq sset13 (ssget "x" '((8 . "CUSTOMER")(0 . "TEXT,MTEXT,*LEADER"))))
  42. (command ".chprop" sset13 "" "c" "bylayer" "")
  43. (command ".chprop" sset13 "" "la" "Defpoints" "")
  44. (setq sset14 (ssget "x" '((8 . "REV_LAYER")(0 . "TEXT,MTEXT,*LEADER"))))
  45. (command ".chprop" sset14 "" "c" "bylayer" "")
  46. (command ".chprop" sset14 "" "la" "Defpoints" "")
  47. ;changes layer
  48. (setq sset15 (ssget "x" '((8 . "STRUCTURES"))))
  49. (command ".chprop" sset15 "" "c" "bylayer" "")
  50. (command ".chprop" sset15 "" "la" "01_Data" "")
  51. (setq sset16 (ssget "x" '((8 . "TOWER"))))
  52. (command ".chprop" sset16 "" "c" "bylayer" "")
  53. (command ".chprop" sset16 "" "la" "02_Tower" "")
  54. (setq sset17 (ssget "x" '((8 . "FENCE"))))
  55. (command ".chprop" sset17 "" "c" "bylayer" "")
  56. (command ".chprop" sset17 "" "la" "03_Fence" "")
  57. (setq sset18 (ssget "x" '((8 . "LEASED_AREA"))))
  58. (command ".chprop" sset18 "" "c" "bylayer" "")
  59. (command ".chprop" sset18 "" "la" "06_Lease Area" "")
  60. (setq sset19 (ssget "x" '((8 . "PROPOSED"))))
  61. (command ".chprop" sset19 "" "c" "bylayer" "")
  62. (command ".chprop" sset19 "" "la" "08_Proposed Data" "")
  63. (setq sset20 (ssget "x" '((8 . "LANDSCAPING"))))
  64. (command ".chprop" sset20 "" "c" "bylayer" "")
  65. (command ".chprop" sset20 "" "la" "01_Data" "")
  66. (setq sset21 (ssget "x" '((8 . "ARROW"))))
  67. (command ".chprop" sset21 "" "c" "bylayer" "")
  68. (command ".chprop" sset21 "" "la" "Defpoints" "")
  69. (setq sset22 (ssget "x" '((8 . "LEVEL"))))
  70. (command ".chprop" sset22 "" "c" "bylayer" "")
  71. (command ".chprop" sset22 "" "la" "01_Data" "")
  72. (setq sset23 (ssget "x" '((8 . "ANTENNA_MOUNTS"))))
  73. (command ".chprop" sset23 "" "c" "bylayer" "")
  74. (command ".chprop" sset23 "" "la" "01_Data" "")
  75. (setq sset24 (ssget "x" '((8 . "ANTENNA"))))
  76. (command ".chprop" sset24 "" "c" "bylayer" "")
  77. (command ".chprop" sset24 "" "la" "01_Data" "")
  78. (setq sset25 (ssget "x" '((8 . "DIMENSIONS"))))
  79. (command ".chprop" sset25 "" "c" "bylayer" "")
  80. (command ".chprop" sset25 "" "la" "Defpoints" "")
  81. (setq sset26 (ssget "x" '((8 . "ANTENNA_PROPOSED"))))
  82. (command ".chprop" sset26 "" "c" "bylayer" "")
  83. (command ".chprop" sset26 "" "la" "08_Proposed Data" "")
  84. (setq sset27 (ssget "x" '((8 . "MOUNTS_PROPOSED"))))
  85. (command ".chprop" sset27 "" "c" "bylayer" "")
  86. (command ".chprop" sset27 "" "la" "08_Proposed Data" "")
  87. )
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:29:13 | 显示全部楼层
提示:
 
  1. (8 . "Layer,Layer2,Layer3")
回复

使用道具 举报

66

主题

1552

帖子

1514

银币

后起之秀

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

铜币
325
发表于 2022-7-5 16:30:27 | 显示全部楼层
我猜想多个命令调用是代码速度的主要缺陷,
因此,考虑创建一个assoc列表,并使用Tharwat的提示遍历选择集,然后使用相同的预定义assoc列表对62和8组码进行entmod。
回复

使用道具 举报

63

主题

6297

帖子

6283

银币

后起之秀

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

铜币
358
发表于 2022-7-5 16:47:31 | 显示全部楼层
实际上,Grrr准确地描述了代码将是什么,这是我在第二次回复中提到的注意事项,但他在这一点上更快。谢谢Grrr。
 
我需要去睡觉了,所以这是修改后的代码供你检查和学习,我留下了你的代码的第一部分,只要他们很容易处理修改。正当
 
  1. (defun c:test (/ s i e)
  2. (if (setq s (ssget "_X" '((8 . "STRUCTURES,TOWER,FENCE,LEASED_AREA,PROPOSED,LANDSCAPING,ARROW,LEVEL,ANTENNA_MOUNTS,ANTENNA,DIMENSIONS,ANTENNA_PROPOSED,MOUNTS_PROPOSED"))))
  3.    (repeat (setq i (sslength s))
  4.      (setq e (entget (ssname s (setq i (1- i)))))
  5.      (entmod
  6.        (append e
  7.                (list '(62 . 256)
  8.                     (cadr (assoc (cdr (assoc 8 e))
  9.                             '(("STRUCTURES" "01_Data")
  10.                               ("TOWER" "02_Tower")
  11.                               ("FENCE" "03_Fence")
  12.                               ("LEASED_AREA" "06_Lease Area")
  13.                               ("PROPOSED" "08_Proposed Data")
  14.                               ("LANDSCAPING" "la" "01_Data")
  15.                               ("ARROW" "Defpoints")
  16.                               ("LEVEL" "01_Data")
  17.                               ("ANTENNA_MOUNTS" "01_Data")
  18.                               ("ANTENNA" "01_Data")
  19.                               ("DIMENSIONS" "Defpoints")
  20.                               ("ANTENNA_PROPOSED" "08_Proposed Data")
  21.                               ("MOUNTS_PROPOSED" "08_Proposed Data")
  22.                              ) )  )
  23.                )
  24.        )
  25.      )
  26.    )
  27. )
  28. (princ)
  29. )
回复

使用道具 举报

26

主题

1495

帖子

20

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
118
发表于 2022-7-5 17:01:17 | 显示全部楼层
加快速度的一件事是,这些类型的调用是单个(命令…)呼叫
 
  1. (command "_.CHPROP")
  2. (foreach v lst
  3. (command "_c" "BYLAYER"  (car v) "_la" "DEFPOINTS")
  4. (command "")
回复

使用道具 举报

22

主题

78

帖子

59

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
114
发表于 2022-7-5 17:11:32 | 显示全部楼层
哇,谢谢你们的回复!我将把这些分开,试着理解它们。学习的好方法!非常感谢。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-13 19:51 , Processed in 0.914201 second(s), 64 queries .

© 2020-2025 乐筑天下

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