乐筑天下

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

[编程交流] 从一个层移动对象

[复制链接]

6

主题

44

帖子

39

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 14:26:35 | 显示全部楼层 |阅读模式
我被分配了一个相当大的单调的工作,希望有人能帮我。我需要使用一些可预测的条件将对象从一个层移动到另一个层,我不想花几天的时间来做这件事,这里是瘦的。
 
给定一个对象,检查它所在的层是否以-E结尾,例如FOO-BAR-E
 
在一个名为TEMP的单独模板文件中。DWG,检查是否存在后缀为-N的图层,如果存在,则移动从模板导入图层并将对象移动到该图层,因此如果FOO-BAR-N是模板中的图层,则将该图层带入当前图形,然后将对象从FOO-BAR-E移动到FOO-BAR-E
 
如果没有后缀为-N的层,请检查同一模板文件中是否有无后缀层,如果有,请将其移动到该层,使FOO-BAR-E到FOO-BAR
 
如果这两个都不存在,那么只需移动到下一个对象。冲洗并重复接下来的200张图纸。
 
我对VBA或AutoLISP不挑剔,我在AutoCad 2008中工作。
 
任何帮助都会很好。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:35:03 | 显示全部楼层
一切似乎都可以做到-但我认为最好在运行LISP之前将图层更改输入到LISP中,而不是使用模板文件-在LISP中的图形之间切换已经很难了。。。
回复

使用道具 举报

6

主题

44

帖子

39

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 14:41:29 | 显示全部楼层
谢谢李,今天下午当我回到那个项目时,我会查出来的。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:46:30 | 显示全部楼层
上述方法行不通-我将删除它,看看还能想出什么其他方法
回复

使用道具 举报

6

主题

44

帖子

39

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 14:49:41 | 显示全部楼层
谢谢李,我试了一下,正如你所说,它不起作用。如果我不是在为Microstation()学习VBA,我会在这个周末努力拼凑一些东西,但这个项目没有我的其他项目那么紧迫。
 
一如既往,感谢您对社区的帮助和贡献。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:56:40 | 显示全部楼层
试试这个,伙计:
 
(我正在学习这个ObjectDBX的东西,所以有点碰运气……)
 
  1. ;; ObjectDBX Tester  by Lee McDonnell (Lee Mac)
  2. ;; Credit to Tony Tanzillo for Directory Browser, Tim Willey
  3. (defun c:MacDwg (/ refLst *error* *acad Shell fDir Dir dbx lay Tag)
  4. (vl-load-com)
  5. (setq refLst '(
  6.                 ("FOO-BAR-E" . "FOO-BAR-N")
  7.                 ("FOO-CAR-E" . "FOO-CAR-N")
  8.                 )
  9.        )  
  10. (defun *error* (e)
  11.    (if ov (mapcar 'setvar vl ov))
  12.    (ObjRel (list Shell dbx *acad))
  13.    (if (not (wcmatch (strcase e) "*CANCEL*,*EXIT*"))
  14.      (princ (strcat "\n<< Error: " e " >>")))
  15.    (princ))
  16. (setq *acad (vlax-get-acad-object)
  17.        Shell (vla-getInterfaceObject *acad "Shell.Application")
  18.        fDir (vlax-invoke-method Shell 'BrowseForFolder
  19.               (vla-get-HWND *acad) "Select Directory: " 0))
  20. (if fDir
  21.    (progn
  22.      (setq Dir
  23.        (vlax-get-property
  24.          (vlax-get-property fDir 'Self) 'Path))
  25.      (if (not (eq "\" (substr Dir (strlen Dir))))
  26.        (setq Dir (strcat Dir "\")))
  27.      (if (< (atoi (setq acVer (substr (getvar "ACADVER") 1 2))) 16)
  28.        (setq acVer "") (setq acVer (strcat (chr 46) acVer)))
  29.      (setq dbx (vla-getInterfaceObject
  30.                  *acad (strcat "ObjectDBX.AxDbDocument" acVer)))
  31.      (princ "\nProcessing...")
  32.      (foreach dwg (setq dwLst
  33.                     (mapcar
  34.                       (function
  35.                         (lambda (x)
  36.                           (strcat Dir x)))
  37.                       (vl-directory-files Dir "*.dwg" 1)))
  38.        (vla-open dbx dwg)
  39.        (vlax-for Lay (vla-get-layouts dbx)
  40.          (vlax-for Obj (vla-get-Block lay)
  41.            (if (setq Tag (assoc (vla-get-layer Obj) refLst))
  42.              (vla-put-layer Obj (cdr Tag)))))
  43.       
  44.        (vla-saveas dbx dwg)        
  45.        (princ (chr 46)))
  46.      (princ (strcat "\n<< " (rtos (length dwLst) 2 0) " Drawings Processed >>"))))
  47. (ObjRel (list Shell dbx *acad))
  48. (gc)
  49. (princ))
  50.            
  51. (defun ObjRel (lst)
  52. (mapcar
  53.    (function
  54.      (lambda (x)
  55.        (if (and (eq (type x) 'VLA-OBJECT)
  56.                 (not (vlax-object-released-p x)))
  57.          (vl-catch-all-apply
  58.            'vlax-release-object (list x))))) lst))
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:04:32 | 显示全部楼层
 
你为什么要学习VBA?我以为那已经灭绝了。。。
回复

使用道具 举报

21

主题

146

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2022-7-6 15:04:54 | 显示全部楼层
 
我认为没有。NET API for Microstation。今年早些时候我最后一次检查的时候没有。
 
宾利论坛将告诉我们所有人。
回复

使用道具 举报

21

主题

146

帖子

127

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
106
发表于 2022-7-6 15:10:23 | 显示全部楼层
http://www.la-solutions.co.uk/content/MicroStationDevelopmentLanguages.htm#.NET
 
我们开始吧。大体上NET只使用COM互操作。现在我记得为什么我推迟了一些Microstation应用程序的编程。
回复

使用道具 举报

6

主题

44

帖子

39

银币

初来乍到

Rank: 1

铜币
35
发表于 2022-7-6 15:20:35 | 显示全部楼层
没有运气,同样的错误。
 
>
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 00:33 , Processed in 0.773685 second(s), 72 queries .

© 2020-2025 乐筑天下

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