TroutKing 发表于 2022-7-6 17:21:38

VB中的外部参照

又是你好
 
在VB中,有没有一种简单的方法可以将用户选择的外部参照附着到图形,然后将其设置为“后退”?我想创建一个例程,用于打开图形,然后提示我协商到文件夹并选择要附着到该图形的外部参照,将外部参照设置为“后退”,然后继续执行我放入代码中的其他例程。
我相信这可能是一个非常简单的代码,但它不属于我的经验范畴。
有人能帮我吗?

fixo 发表于 2022-7-6 17:28:25

这是你需要的一小部分
但我希望能引导你走上正确的道路
 
~'J'~
XREF\u插入。拉链

TroutKing 发表于 2022-7-6 17:30:26

天哪,看来我的猜测还很遥远。这远没有我想象的那么简单。我认为,因为需要再次设置浏览器,所以这与之前的例程不起作用。
 
我希望能够尝试并以某种方式将其整合到您在过去几周帮助我完成的循环例程中,该例程打开了一组图形,并在每个图形上执行了一些例程。
 
我想对其进行设置,以便在用户(我)协商到包含所有要循环的图形的文件夹后,我可以选择一个外部参照(对于所有图形,该外部参照将保持不变),在每个图形打开并通过循环时附着到每个图形。
 
谢谢你的代码。这会让我头疼的。如果你还有其他想法,我很乐意听听………。

TroutKing 发表于 2022-7-6 17:36:23

我不确定我是否理解这一部分:

blkName = InputBox(vbCr & vbCr & "Enter block name for XRef: ", "XRef Image Name")
&

Set insertedBlock = ThisDrawing.ModelSpace.AttachExternalReference(PathName, blkName, InsertPoint, 0, 0, 0, 0, False)

我在这里到底定义了什么?我不知道该进入什么地方,也不知道为什么需要进入。外部参照需要块名?你能解释一下吗?

fixo 发表于 2022-7-6 17:40:15

你好,伙计
是的,正如你在《帮助》中看到的那样
需要定义外部参照的块名称
我想你之前的问题是什么
此批处理操作需要使用ObjectDBX
或者使用脚本
如果我有时间,我会试着稍后再做
您的机器上有什么Acad版本?
 
~'J'~

fixo 发表于 2022-7-6 17:46:36

 
这是一个又快又脏的划痕
但似乎对我有用
试试这个
 
~'J'~
XREF\u插入。拉链

TroutKing 发表于 2022-7-6 17:50:12

嗨Oleg
 
我能够将您在此线程中显示的第一个代码合并到我的例程中,并使其正常工作!然而,我想添加/更改两件事。
 
让我解释一下我在做什么。
我的基本淡化示例:
 
我有3个文件夹(所有文件夹可能会经常更改)。
 
文件夹1-包含我要打开的所有图形(如果插入或外部参照在一起,所有这些图形就像拼图一样拼合在一起)
文件夹2–只有一个图形。该图纸是所有其他图纸(灰度)的合成图
文件夹3:为空。这是我的最终输出图形将进入的文件夹。
 
在一个循环中,我是:
-打开文件夹1中的图形
-将图形从文件夹2外部参照到打开的图形中
-将DWG另存为DWF到文件夹3中
 
到目前为止,在我得到的所有帮助下,这个程序起了作用。我喜欢,而且效果很好。它正在做我需要的事情。
 
然而,我需要做两个补充/更改:
1.目前,在这个例程中,我被提示从文件夹2中选择我正在外部参照的图形。这就是我想要的。但是-我希望在第一次选择图形后,外部参照图形保持静态。目前,该例程让我为整个循环中的每个图形选择该外部参照。
2.我希望能够在此例程开始时同时选择文件夹1和文件夹3。我看到那个老家伙在我的另一个线程上发布了一个可能解决这个问题的方法,但我还没能走那么远。
 
你能帮我解决问题1吗?我相信修复相当简单,但我的尝试一直没有成功。一旦这个问题得到解决,我可以继续讨论问题2。
 
(我意识到这段代码可能没有你们大师能够做到的那么干净和分类——但我是自学成才的,在我的知识和对VB的熟悉程度上有很大差距。
例如,我不知道“公共职能、私人职能和职能等”之间的区别
UserDirectedFolderToConvertDWGtoDWF(SafeAsOf_06.06.07.zip)的副本

fixo 发表于 2022-7-6 17:55:09

嗨,伙计
不保证我能做到
无论如何,如果我能翻译的话,我会试试的
你在我母语上的留言
确切地
英雄联盟
 
~'J'~

TroutKing 发表于 2022-7-6 17:59:38

你好,Oleg
 
我只是想确保你看到了我附上的文件。它包含了我正在做的事情的完整工作代码。我不需要重写所有内容。我认为,在第一个循环后,只需稍作调整即可使外部参照路径保持静态。我已经试过了——我相信我已经接近了——但我并没有完全正确。
 
我感谢你所有的努力!

TroutKing 发表于 2022-7-6 18:00:33

在我看来,从日常生活中,我应该能够做到:
 

Dim xrfilename As String
Dim blkname As String
xrfilename = "" ' clean up previous
Dim p, f, s
p = ThisDrawing.GetVariable("DWGPREFIX")
f = "AutoCAD Drawings and Templates|*.dwg;*.dwt|All Files|*.*|"
xrfilename = BrowseForFile(p, f)
blkname = "XREF_IMAGE" '"" 'InputBox(vbCr & vbCr & "Enter block name for XRef: ", "XRef Image Name")

 
并添加一个简单的IF语句,例如:
 

If xrfilename = "" Then
Dim xrfilename As String
Dim blkname As String
xrfilename = "" ' clean up previous
Dim p, f, s
p = ThisDrawing.GetVariable("DWGPREFIX")
f = "AutoCAD Drawings and Templates|*.dwg;*.dwt|All Files|*.*|"
xrfilename = BrowseForFile(p, f)
blkname = "XREF_IMAGE" '"" 'InputBox(vbCr & vbCr & "Enter block name for XRef: ", "XRef Image Name")
End If

但由于某些原因,xrfilename没有保留原始路径和图形,因此当它第二次通过循环时,仍会提示我协商外部参照的路径。我错过了什么?
(这块板需要一个男人拔头发的表情符号)
页: [1] 2
查看完整版本: VB中的外部参照