『已解决』关于面板焦点问题 - 精华帖集合
www.dimcax.com
『已解决』关于面板焦点问题
,
autodesk.autocad.windows.paletteset
在面板做任何操作,都必须等到把光标移到屏幕上才会生效,好象是要把焦点给cad的主窗口才会生效
有没有什么办法可以解决?各位!
详细观察了cad的属性面板,每次做属性修改时,都会把焦点返回给主窗口一次。
就是啊,我也遇到了.
怎么弄啊?
路漫漫其修远兮,吾将上下而求索!
在和qq群里一个网友讨论acad主窗体的焦点问题时想到的。
c#:
你要先声明一个win32 函数:
[dllimport("user32.dll")]
private static extern system.intptr setfocus(system.intptr hwnd);
然后在需要设置焦点的地方调用该函数
setfocus(application.documentmanager.mdiactivedocument.window.);
vb.net版本:
private declare function setfocus lib "user32" (byval hwnd as system.intptr) as system.intptr
setfocus(application.documentmanager.mdiactivedocument.window.handle)
当然你也可以用此函数为面板设置焦点。
c#最适合开发autocad,因为它拥有vb容易的特点,却具有vc++的强大功能。
问题已经解决,老大指点。
我也在想只有靠api了,但不知道这个函数,用vb.net之前,api也用过一些,到了.net之后,几乎可以不用api了,都忘了。
还是有问题啊
我按才鸟的方法做了,还是不行啊.
代码如下:
setfocus(application.documentmanager.mdiactivedocument.window.handle)
dim ed as editor = application.documentmanager.mdiactivedocument.editor
dim ppr as promptpointresult
dim pt as point3d
ppr = ed.getpoint("请输入基准点")
pt = ppr.value
原帖由 ssdmt 于 2007-11-4 11:33 am 发表
我按才鸟的方法做了,还是不行啊.
代码如下:
setfocus(application.documentmanager.mdiactivedocument.window.handle)
dim ed as editor = application.documentmanager.mdiactivedocument.edito ...
你还有什么问题?
模具相关绿色软件
皆唯网
一个样.请问如何在函数中执行fillet命令
一个样.请问如何在函数中执行fillet命令
public function testfillet() as integer
dim db as database = application.documentmanager.mdiactivedocument.database
dim tm as autodesk.autocad.databaseservices.transactionmanager = db.transactionmanager
dim ta as transaction = tm.starttransaction
dim bt as blocktable = tm.getobject(db.blocktableid, autodesk.autocad.databaseservices.openmode.forread, false)
dim btr as blocktablerecord = tm.getobject(bt(blocktablerecord.modelspace), autodesk.autocad.databaseservices.openmode.forwrite, false)
try
dim l1 as autodesk.autocad.databaseservices.line
dim l2 as autodesk.autocad.databaseservices.line
l1 = new autodesk.autocad.databaseservices.line(new point3d(0, 0, 0), new point3d(100, 0, 0))
l2 = new autodesk.autocad.databaseservices.line(new point3d(0, 0, 0), new point3d(0, 100, 0))
'请问如何使l1,l2以r为半径圆角?
btr.appendentity(l1)
tm.addnewlycreateddbobject(l1, true)
ta.commit()
catch ex as system.exception
ta.dispose()
msgbox(ex.message)
end try
end function
原帖由 ssdmt 于 2007-11-4 03:46 pm 发表
一个样.请问如何在函数中执行fillet命令
public function testfillet() as integer
dim db as database = application.documentmanager.mdiactivedocument.database
dim tm as autodesk.au ...
直接调用fillet命令好象是不能帮你修剪的。
只能通过两条线计算出圆弧的中心点,与起始角度、终止角度,然后画圆弧,再把两条线的点修改与圆弧相却。
模具相关绿色软件
皆唯网
我按才鸟的方法做了,还是不行啊.
这个问题还是解决不了啊
试了好久终于发现还可以用cad自带命令"graphscr"实现把焦点返回给主窗口
sendstringtoexecute方法