AcadApplication.Visible = False
好的......这是我的难题......我正忙着在VB中构建一个应用程序,该应用程序将访问AutoCAD对象模型并使用AutoCAD执行一系列任务...
如果AutoCAD正在运行,我会让AcadApplication可见,但如果应用程序尚未运行,我希望应用程序不可见,因此对用户视图隐藏。
我需要知道我需要跳过哪些环(如果确实可能)来在应用程序隐藏时操作绘图。
例如...有人知道我如何做到这一点吗:
AcadApplication.Visible = False
AcadApplication.ActiveDocument.ModelSpace.AddLine PT1, PT2
AcadApplication.ActiveDocument.Close True
AcadApplication.Quit
**** Hidden Message ***** 我不知道这是否有任何相关性,但我只是使用Excel工作簿尝试了一下。
我可以创建应用程序,通过从autocad发送信息来操作单元格,并打印出工作表,同时保持其不可见 我知道你可以用Excel来做,因为它使用了不同的方法来访问数据。AutoCAD使用图形坐标来操作其数据库。我这样做的主要原因是因为我还不能在AutoCAD窗口不是最上面的活动窗口的情况下从外部操纵AutoCAD模型。 Keith,如果您从文档集合中访问文档,而不是使用活动文档,并确保不对屏幕做任何事情(重新生成、重新绘制、缩放),它应该可以工作。例如,这是有效的:
Sub test()
Dim AcadApp As AcadApplication 'Object
Dim acadDoc As AcadDocument
Dim dblPt1(2) As Double
Dim dblPt2(2) As Double
Dim dblpt3(2) As Double
dblPt2(1) = 100
dblpt3(0) = 100: dblpt3(1) = 100
Set AcadApp = GetAcadObject
Set acadDoc = AcadApp.Documents.Add("acad.dwt")
AcadApp.Visible = False
acadDoc.SaveAs ("c:\test")
acadDoc.ModelSpace.AddLine dblPt1, dblPt2
acadDoc.ModelSpace.AddLine dblPt2, dblpt3
acadDoc.ModelSpace.AddLine dblpt3, dblPt1
acadDoc.Save
AcadApp.Quit
Set AcadApp = Nothing
End Sub
另一种方法是通过AcadObject使用ObjectDBX,因为它无论如何都不会打开绘图进行编辑。 凉。。。我会试试的...由于我正在处理现有的图纸,我想我可以打开图纸,抓住drawin对象并在那里操作它,而不是完全通过文档集合。 Keith,
只是为了好玩,我在Excel VBA中尝试了这个,它比我预期的要好.
'A reference to: ObjectDBX 1.0 Type Library
'must be set
Sub testme()
Dim oAcad As Object
Dim oDBX As AxDbDocument
Dim strFname As String
Dim dblPt1(2) As Double
Dim dblPt2(2) As Double
Dim dblpt3(2) As Double
Dim oEnt As AcadEntity
dblPt2(1) = 1000
dblpt3(0) = 1000: dblpt3(1) = 1000
Set oAcad = GetAcadObject 'use Keith's function
oAcad.Visible = False
Set oDBX = oAcad.getinterfaceobject("ObjectDBX.AxDbDocument")
strFname = "C:\test.dwg" 'Must use a real path & name
oDBX.Open (strFname)
'Do some stuff for test purposes
oDBX.ModelSpace.AddLine dblPt1, dblPt2
oDBX.ModelSpace.AddLine dblPt2, dblpt3
oDBX.ModelSpace.AddLine dblpt3, dblPt1
For Each oEnt In oDBX.ModelSpace
oEnt.Color = acGreen
Next
oDBX.SaveAs strFname
Set oDBX = Nothing
oAcad.Quit
Set oAcad = Nothing
End Sub
我想当我想在图上执行特定的命令,而不是试图画一个对象时,我的问题就会出现,我可能会发送一系列命令,如plotting、lisp命令、BOM proggies等...我们会看到它是如何工作的。 我知道这一点,但它也将允许将相同的确切代码用于任何版本的AutoCAD。
请记住,通过检查注册表中的多个版本,可以很容易地解决当前版本打开的问题(即使用的最后一个版本),如果有,请请求用户想要使用哪个版本。 我想你可能已经知道了,但我想无论如何我都应该提出它。如果不是为了你,为了其他试图使用该代码的人。 很公平......我通常会尝试在运行时加载对象模型,因为如果用户有任何版本,它通常会工作。
页:
[1]
2