找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1063|回复: 12

[求助] 使用ActiveX在后台打开DWG,如何调用ZOOM之类的方法?

[复制链接]
发表于 2018-5-20 10:02:46 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
如题。
因为要多次使用选择集,只有将图像放大时,结果才会正确。所以才想要多次ZOOM。但在后台打开的,使用ZOOM等命令时,会提示“autocad 主窗口不可见”。

还请各位有空教一下。
谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-5-20 14:08:15 | 显示全部楼层
ACTIVEX 有ZOOM方法的,不过,你在后台打开,你ZOOM了,该看不见还是看不见的,你想勾选屏幕内选择集也得不得。你得遍历数据库。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-20 15:52:53 | 显示全部楼层
是这样的。
CAD的图比较大。选择集是动态的,按指定的坐标进行:sset.Select(AcSelect.acSelectionSetCrossing, pl, pr,,)
在调试时发现,选择集的结果经常变化。最终确定,是因为图形显示的原因所致。如果将CAD的窗口ZoomWindow到选择集的范围,那选择集得到的结果就是正确的;但如果图形是显示全部,或是指定的坐标不在窗口范围内时,选择集结果就会出问题——虽然有指定的坐标。
所以,我想就是在选择集之前,先将窗口ZOOM到这个选择集范围,这时,就会出现了我提出的问题。
将CAD显示打开,操作正常。但如果采用后台打开的方式,就会报错。所以,想知道有没有在后台打开的前提下,能实现ZoomWindow的效果。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-20 16:08:45 | 显示全部楼层
我说的后台打开是指将实例的 Visible = False
或是不设置。
另,我ZOOM及其他的所有操作,不要人工干涉,所以希望在后台实现操作。
谢谢您抽空帮忙。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-20 17:47:49 | 显示全部楼层
  1. VBA Example
  2. Sub Example_ZoomAll()
  3.     ' This example creates several objects in model space and
  4.     ' then performs a variety of zooms on the drawing.

  5.     AppActivate ThisDrawing.Application.Caption

  6.     ' Create a Ray object in model space
  7.     Dim rayObj As AcadRay
  8.     Dim basePoint(0 To 2) As Double
  9.     Dim SecondPoint(0 To 2) As Double
  10.     basePoint(0) = 3#: basePoint(1) = 3#: basePoint(2) = 0#
  11.     SecondPoint(0) = 1#: SecondPoint(1) = 3#: SecondPoint(2) = 0#
  12.     Set rayObj = ThisDrawing.ModelSpace.AddRay(basePoint, SecondPoint)
  13.    
  14.     ' Create a polyline object in model space
  15.     Dim plineObj As AcadLWPolyline
  16.     Dim points(0 To 5) As Double
  17.     points(0) = 3: points(1) = 7
  18.     points(2) = 9: points(3) = 2
  19.     points(4) = 3: points(5) = 5
  20.     Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(points)
  21.     plineObj.Closed = True

  22.     ' Create a line object in model space
  23.     Dim lineObj As AcadLine
  24.     Dim startPoint(0 To 2) As Double
  25.     Dim endPoint(0 To 2) As Double
  26.     startPoint(0) = 0: startPoint(1) = 0: startPoint(2) = 0
  27.     endPoint(0) = 2: endPoint(1) = 2: endPoint(2) = 0
  28.     Set lineObj = ThisDrawing.ModelSpace.AddLine(startPoint, endPoint)
  29.    
  30.     ' Create a circle object in model space
  31.     Dim circObj As AcadCircle
  32.     Dim centerPt(0 To 2) As Double
  33.     Dim radius As Double
  34.     centerPt(0) = 20: centerPt(1) = 30: centerPt(2) = 0
  35.     radius = 3
  36.     Set circObj = ThisDrawing.ModelSpace.AddCircle(centerPt, radius)

  37.     ' Create an ellipse object in model space
  38.     Dim ellObj As AcadEllipse
  39.     Dim majAxis(0 To 2) As Double
  40.     Dim center(0 To 2) As Double
  41.     Dim radRatio As Double
  42.     center(0) = 5#: center(1) = 5#: center(2) = 0#
  43.     majAxis(0) = 10: majAxis(1) = 20#: majAxis(2) = 0#
  44.     radRatio = 0.3
  45.     Set ellObj = ThisDrawing.ModelSpace.AddEllipse(center, majAxis, radRatio)

  46. ' ZoomAll
  47.     MsgBox "Perform a ZoomAll", , "ZoomWindow Example"
  48.     ZoomAll
  49.    
  50. ' ZoomWindow
  51.     MsgBox "Perform a ZoomWindow using the following coordinates:" & vbCrLf & _
  52.            "1.3, 7.8, 0" & vbCrLf & _
  53.            "13.7, -2.6, 0", , "ZoomWindow Example"
  54.            
  55.     Dim point1(0 To 2) As Double
  56.     Dim point2(0 To 2) As Double
  57.     point1(0) = 1.3: point1(1) = 7.8: point1(2) = 0
  58.     point2(0) = 13.7: point2(1) = -2.6: point2(2) = 0
  59.     ZoomWindow point1, point2
  60.    
  61. ' ZoomScaled
  62.     MsgBox "Perform a ZoomScaled using:" & vbCrLf & _
  63.            "Scale Type: acZoomScaledRelative" & vbCrLf & _
  64.            "Scale Factor: 2", , "ZoomWindow Example"
  65.     Dim scalefactor As Double
  66.     Dim scaletype As Integer
  67.     scalefactor = 2
  68.     scaletype = acZoomScaledRelative
  69.     ZoomScaled scalefactor, scaletype
  70.    
  71. ' ZoomExtents
  72.     MsgBox "Perform a ZoomExtents", , "ZoomWindow Example"
  73.     ZoomExtents
  74.    
  75. ' ZoomPickWindow
  76.     MsgBox "Perform a ZoomPickWindow", , "ZoomWindow Example"
  77.     ZoomPickWindow
  78.    
  79. ' ZoomCenter
  80.     MsgBox "Perform a ZoomCenter using:" & vbCrLf & _
  81.            "Center 3, 3, 0" & vbCrLf & _
  82.            "Magnification: 10", , "ZoomWindow Example"
  83.     Dim zcenter(0 To 2) As Double
  84.     Dim magnification As Double
  85.     zcenter(0) = 3: zcenter(1) = 3: zcenter(2) = 0
  86.     magnification = 10
  87.     zoomcenter zcenter, magnification
  88.    
  89. End Sub
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-20 18:26:59 | 显示全部楼层
这个方法,如果是后台调用,会提示“autocad 主窗口不可见”。
这就是我的问题所在。

因为我现在是后台打开DWG文件的(Visible = False)。如果是窗口操作,就没这个问题了。

点评

只有在当前数据库,你ZOOM才有意义,你为什么要想在后台ZOOM呢?起什么作用呢?  详情 回复 发表于 2018-5-20 18:30
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-20 18:30:48 | 显示全部楼层
xiafan28 发表于 2018-5-20 18:26
这个方法,如果是后台调用,会提示“autocad 主窗口不可见”。
这就是我的问题所在。

只有在当前数据库,你ZOOM才有意义,你为什么要想在后台ZOOM呢?起什么作用呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-20 18:43:12 | 显示全部楼层
因为有很多的数据要处理。
都是通过某个点,或是某个字符串,以此为基础,然后找出其某个方向上最近一条线段或是点,然后再获取该线段或是点的坐标,扩大一片区域,再加入到选择集,然后再移动。
如此反复。

在此期间,不希望有人为操作,也不能有人为操作(操作之后程序会崩溃),所以就放在后台执行。
在这些操作中,会频繁建立选择集,所以才会出现此问题。

点评

那和你后台ZOOM有什么关系呢,为什么想ZOOM呢  详情 回复 发表于 2018-5-20 18:52
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-20 18:52:27 | 显示全部楼层
xiafan28 发表于 2018-5-20 18:43
因为有很多的数据要处理。
都是通过某个点,或是某个字符串,以此为基础,然后找出其某个方向上最近一条线 ...

那和你后台ZOOM有什么关系呢,为什么想ZOOM呢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 20个

财富等级: 恭喜发财

发表于 2018-5-20 19:06:40 | 显示全部楼层
ACTIVEX ZOOM类方法,要求:This method applies only to the current active viewport
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-20 19:14:36 | 显示全部楼层
在调试时发现,选择集的结果经常变化。最终确定,是因为图形显示的原因所致。如果将CAD的窗口ZoomWindow到选择集的范围,那选择集得到的结果就是正确的;但如果图形是显示全部,或是指定的坐标不在窗口范围内时,选择集结果就会出问题——虽然有指定的坐标。
所以,我想就是在选择集之前,先将窗口ZOOM到这个选择集范围,这时,就会出现了我提出的问题。
将CAD显示打开,操作正常。但如果采用后台打开的方式,就会报错。所以,想知道有没有在后台打开的前提下,能实现ZoomWindow的效果。

所以才想知道,有没有在后台也能实现ZOOM之类的方法。

点评

你测试时候,当前文档,你ZOOM到窗口才正常,但你后台时候,ZOOM是执行不了的,因为不能设置到当前VIEWPORT,你只能换个方式,遍历数据库去找你需要的实体。  详情 回复 发表于 2018-5-20 22:15
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 13个

财富等级: 恭喜发财

发表于 2018-5-20 22:15:24 | 显示全部楼层
xiafan28 发表于 2018-5-20 19:14
在调试时发现,选择集的结果经常变化。最终确定,是因为图形显示的原因所致。如果将CAD的窗口ZoomWindow到 ...

你测试时候,当前文档,你ZOOM到窗口才正常,但你后台时候,ZOOM是执行不了的,因为不能设置到当前VIEWPORT,你只能换个方式,遍历数据库去找你需要的实体。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-5-21 08:16:02 | 显示全部楼层
好像也只能这样了。
谢谢各位的帮助啊。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-3-29 13:54 , Processed in 0.352653 second(s), 52 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表