![]() |
【转帖】『已解决』关于面板焦点问题 - 精华帖集合
『已解决』关于面板焦点问题 - 精华帖集合
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方法 |
所有的时间均为北京时间。 现在的时间是 02:36 AM. |