乐筑天下

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

[编程交流] 带d的力层平移

[复制链接]

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:17:48 | 显示全部楼层 |阅读模式
我有这个代码来处理调查,当我运行它时,laytrans不会运行。有人看到我丢了什么吗?
 
  1. (defun c:survey_transform ()
  2. ; First construct our entity list
  3. (setq vl1 (list
  4. (cons 0 "LAYER")  ;Name of entity
  5. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  6. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  7. (cons 2 "CCC_SURVEY_EXISTING_Feature")    ;Name of Layer
  8. (cons 6 "Continuous")      ;Linetype
  9. (cons 62 150)       ;colour = light grey
  10. (cons 70 0)       ;state
  11. (cons 290 1)       ;1=plot, 0=Don't plot
  12.   )       ;End of entity list
  13. )
  14. (entmake vl1)
  15. (setq vl1 (list
  16. (cons 0 "LAYER")  ;Name of entity
  17. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  18. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  19. (cons 2 "CCC_SURVEY_EXISTING_Number")    ;Name of Layer
  20. (cons 6 "Continuous")      ;Linetype
  21. (cons 62 1)       ;colour = light grey
  22. (cons 70 0)       ;state
  23. (cons 290 1)       ;1=plot, 0=Don't plot
  24.   )       ;End of entity list
  25. )
  26. (entmake vl1)
  27. (setq vl1 (list
  28. (cons 0 "LAYER")  ;Name of entity
  29. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  30. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  31. (cons 2 "CCC_SURVEY_EXISTING_Level")    ;Name of Layer
  32. (cons 6 "Continuous")      ;Linetype
  33. (cons 62 84)       ;colour = light grey
  34. (cons 70 0)       ;state
  35. (cons 290 1)       ;1=plot, 0=Don't plot
  36.   )       ;End of entity list
  37. )
  38. (entmake vl1)
  39. (setq vl1 (list
  40. (cons 0 "LAYER")  ;Name of entity
  41. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  42. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  43. (cons 2 "CCC_SURVEY_Level")     ;Name of Layer
  44. (cons 6 "Continuous")      ;Linetype
  45. (cons 62 84)       ;colour = light grey
  46. (cons 70 0)       ;state
  47. (cons 290 1)       ;1=plot, 0=Don't plot
  48.   )       ;End of entity list
  49. )
  50. (entmake vl1)
  51. (setq vl1 (list
  52. (cons 0 "LAYER")  ;Name of entity
  53. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  54. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  55. (cons 2 "CCC_SURVEY_Number")     ;Name of Layer
  56. (cons 6 "Continuous")      ;Linetype
  57. (cons 62 1)       ;colour = light grey
  58. (cons 70 0)       ;state
  59. (cons 290 1)       ;1=plot, 0=Don't plot
  60.   )       ;End of entity list
  61. )
  62. (entmake vl1)
  63. ; First construct our entity list
  64. (setq vl1 (list
  65. (cons 0 "LAYER")  ;Name of entity
  66. (cons 100 "AcDbSymbolTableRecord")     ;Open Records
  67. (cons 100 "AcDbLayerTableRecord")     ;Locate Layer Table
  68. (cons 2 "CCC_SURVEY_Feature")   ;Name of Layer
  69. (cons 6 "Continuous")      ;Linetype
  70. (cons 62 150)       ;colour = light grey
  71. (cons 70 0)       ;state
  72. (cons 290 1)       ;1=plot, 0=Don't plot
  73.   )       ;End of entity list
  74. )
  75. (entmake vl1)
  76. (and (setq ss (ssget "X" '((8 . "*CODE"))))
  77.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_EXISTING_Feature" ""))
  78. (and (setq ss (ssget "X" '((8 . "*ID"))))
  79.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_EXISTING_Number" ""))
  80. (and (setq ss (ssget "X" '((8 . "*_Z"))))
  81.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_EXISTING_Level" ""))
  82. (and (setq ss (ssget "X" '((8 . "*Points"))))
  83.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_EXISTING_Level" ""))
  84. (and (setq text1(ssget "x" (list '(0 . "TEXT") (cons 62 70))))
  85. (command "_.CHPROP" TEXT1 "" "_LA" "CCC_SURVEY_Level" ""))
  86. (and (setq text2(ssget "x" (list '(0 . "TEXT") (cons 62 12))))
  87. (command "_.CHPROP" TEXT2 "" "_LA" "CCC_SURVEY_Number" ""))
  88. (and (setq text3(ssget "x" (list '(0 . "TEXT") (cons 62 152))))
  89. (command "_.CHPROP" TEXT3 "" "_LA" "CCC_SURVEY_Feature" ""))
  90. (and (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 62 70))))
  91.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_Level" ""))
  92. (and (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 62 12))))
  93.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_Number" ""))
  94. (and (setq ss (ssget "X" (list (cons 0 "INSERT") (cons 62 152))))
  95.     (command "_.CHPROP" ss "" "_LA" "CCC_SURVEY_Feature" ""))
  96. (command "_.CHPROP" "all" "" "C" "BYLAYER" "")
  97. (command "_.-layer" "_C" "84" "CCC_SURVEY_Level" "_C" "150" "CCC_SURVEY_Feature" "" )
  98. (acet-laytrans "CCC_Survey.dws" (+ 1 2))
  99. (command "_-purge" "a" "*" "N")
  100. (princ)
  101. )
回复

使用道具 举报

44

主题

3166

帖子

2803

银币

中流砥柱

Rank: 25

铜币
557
发表于 2022-7-6 09:23:41 | 显示全部楼层
(你的日常生活)远比它需要的复杂。。。我希望我现在有时间帮助重写。也许有人会打败我。有一种更简单的方法来完成这些任务,我的朋友。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:27:01 | 显示全部楼层
其他人能帮上忙吗?
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:30:05 | 显示全部楼层
这里有一种方法。我已经多次看到这个问题了,我只是决定做一些我想要的东西:
命令为ImportLayers。
 
其思想是将图层与源DWG/DWT/DWS文件的图层相匹配。虽然可以通过多种方法导入,但这种方法也允许更新现有图层以进行匹配-类似于“图形标准”命令,但可以编写脚本。
 
如果始终将特定DWG文件作为源,则可以修改(setq*ImportLayersFrom*nil)以设置默认源。E、 如果你的文件是MyTemplate。DWT在文件夹C:\Myfiles中,则应为:
请注意双反斜杠!
 
默认情况下,仅导入新图层,而不导入线型。“更新”选项用于打开/关闭更新现有图层,而“导入”选项用于导入线型。
 
它“应该”也适用于在多个DWG上编写脚本,但(在这种情况下)我建议使用普通的lisp defun,因此:
  1. (ImportLayers "C:\\Myfiles\\MyTemplate.DWT" T T)
最后2个T表示更新和导入,如果您想关闭它们,请将T更改为nil。
回复

使用道具 举报

145

主题

590

帖子

446

银币

中流砥柱

Rank: 25

铜币
725
发表于 2022-7-6 09:33:44 | 显示全部楼层
谢谢你的帮助。这太棒了。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:37:19 | 显示全部楼层
也许这会有所帮助:
 
http://lee-mac.com/steal.html
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:40:17 | 显示全部楼层
很好,李。这实际上是我想把代码带到的地方,但像往常一样,有人打败了我!和往常一样,是你!尽管我认为很多其他人已经有了类似的代码(我相信alan已经有几年这样的代码了)!
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 09:45:22 | 显示全部楼层
关键是“CopyObjects”,使您不必匹配所有属性:眨眼:
回复

使用道具 举报

11

主题

968

帖子

919

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
99
发表于 2022-7-6 09:48:24 | 显示全部楼层
谢谢,是的,这对块定义之类的事情很有效。但是,当您想重新定义(而不仅仅是导入新的)样式/层时会发生什么?
 
顺便说一句,我正在寻找直接从DBX重新定义线型的方法。因为可能有一个自定义线型,我可能不知道它来自哪个LIN文件。我可以通过修改DXF代码来“重新定义”线型样式,但不可能获得DBX连接线型的DXF代码。
 
这件事对我来说是一个棘手的问题。E、 g.我们有一些项目,其中英寸/毫米在顾问之间混合/甚至只是合同的不同部分。由于各种原因,我本想摆脱这一点,但不能。现在英寸图形的线型来自ACAD。林,而mm图纸来自阿卡迪索。LIN(以及其他自定义LIN文件)。如果将英寸DWG外部参照(例如)为毫米DWG,则线型不匹配(并且无法通过ACad的常用对话框修改这些XrefName$LinetypeName线型)。
 
只有两种药剂:
 
[列表=1]
  • 从mm的定义文件中重新加载inch DWG内的线型。保存并转到mm DWG,将VisRetain设置为0,重新加载外部参照,将VisRetain设置为1。返回英寸DWG并从英寸定义文件重新加载线型。但这太愚蠢了,因为您失去了对外部参照图层所做的任何图层设置,这些设置可以通过一些lisp替换,但其余的不能通过lisp完成。
  • 有一些自定义线型名称列表,说明它们来自哪个文件。逐步浏览mm DWG中的所有外部参照线型并提取原始线型名称,然后从保存的列表中找出重新加载它们的位置(ACADISO.LIN或某些自定义的.LIN)。重新加载该文件中的所有文件。获取其DXF数据,然后将外部参照线型的DXF数据替换为相同的数据。
    [/列表]
    至少第2点可以合理地工作,如果没有自定义线型,则操作相当简单。但最坏的情况是你没有这个习惯。LIN文件可用-则两种解决方案都不起作用。
     
    编辑!刮一下!我刚试过!可以在dbx对象上使用vlax vla object->ename函数,然后使用entget!:Dyippeeee!!!
  • 回复

    使用道具 举报

    6

    主题

    249

    帖子

    247

    银币

    初来乍到

    Rank: 1

    铜币
    30
    发表于 2022-7-6 09:51:18 | 显示全部楼层
    irneb,我似乎无法从源dwg导入线型。我会做错什么?它们都是连续的!
    TIA,Steve
    回复

    使用道具 举报

    发表回复

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

    本版积分规则

    • 微信公众平台

    • 扫描访问手机版

    • 点击图片下载手机App

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

    GMT+8, 2025-3-7 03:16 , Processed in 0.379083 second(s), 72 queries .

    © 2020-2025 乐筑天下

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