几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量

几何尺寸与公差论坛------致力于产品几何量公差标准GD&T (GDT:ASME)|New GPS(ISO)研究/CAD设计/CAM加工/CMM测量 (http://www.dimcax.com/hust/index.php)
-   ObjectARX(VB.NET/C#) (http://www.dimcax.com/hust/forumdisplay.php?f=176)
-   -   如何实现视图缩放? (http://www.dimcax.com/hust/showthread.php?t=9521)

yang686526 2009-04-21 10:00 AM

如何实现视图缩放?
 
如何实现视图缩放?
www.dimcax.com
如何实现视图缩放?
cad命令zoom o可以实现视图按照选定的对象进行缩放,用c#代码可以实现相同的功能吗?
请高手指点,给点提示也好!
acadapplication acadapp = (acadapplication)autodesk.autocad.applicationservices.application.acadapplication; acadapp.zoomwindow(ent.geomextents.minpoint.toarray(), ent.geomextents.maxpoint.toarray());
非常感谢。若选择的对象很多,在求取minpoint.、maxpoint时,是不是只有逐个判断?有没有现成的方法?
也可以直接利用objectarx的函数进行控制
下面是我写的一个对话框类的一个成员函数。希望能对你有所帮助 private bool opentemplatedrawing(string filename, database dbinsert) { bool result = true; using (database db = hostapplicationservices.workingdatabase) { try { dbinsert.readdwgfile(filename, fileshare.readwrite , true, ""); } catch (system.exception ereaddwgfile) { messagebox.show("打开并读取图框样板文件时发生错误,请检查文件的有效性\n\n" + ereaddwgfile.message); } try { this.hide(); objectid idblocktablerecord = db.insert("templatedrawing", dbinsert, true); using (transaction transforeground = db.transactionmanager.starttransaction()) { blocktable bt = (blocktable)transforeground.getobject(db.blocktableid, openmode.forread); blocktablerecord btr = (blocktablerecord)transforeground.getobject(bt[blocktablerecord.modelspace], openmode.forwrite); blockreference br = new blockreference(point3d.origin, idblocktablerecord); btr.appendentity(br); transforeground.addnewlycreateddbobject(br, true); autodesk.autocad.applicationservices.document doc = autodesk.autocad.applicationservices.application.documentmanager.mdiactivedocument; editor editor = doc.editor; viewtablerecord viewtablerecord = editor.getcurrentview(); extents3d extents = br.geometricextents; viewtablerecord.centerpoint = new point2d((extents.maxpoint.x - extents.minpoint.x) / 2 + extents.minpoint.x, (extents.maxpoint.y - extents.minpoint.y) / 2 + extents.minpoint.y); double brwidth = extents.maxpoint.x - extents.minpoint.x; double brheight = extents.maxpoint.y - extents.minpoint.y; viewtablerecord.height = extents.maxpoint.y - extents.minpoint.y; viewtablerecord.width = extents.maxpoint.x - extents.minpoint.x; editor.setcurrentview(viewtablerecord); autodesk.autocad.applicationservices.application.updatescreen(); ///有必要的话,可以打碎该块 br.explodetoownerspace(); br.erase(true); transforeground.commit(); } } catch (system.exception einsertblock) { messagebox.show("插入图框样板文件并试图缩放时,发生了不应该发生的错误。\n\n请将该问题报告给编程者。\n\n如果图框样板文件被正常显示,可以试着继续进行下面的操作。\n\n否则,请检查样板文件的有效性\n\n" + einsertblock.message); return false; } } return result; } [
感谢三楼、五楼的解答!三楼的代码应该是vb的,对应的c#代码应该是啥样的呢?
原帖由 azbd 于 感谢三楼、五楼的解答!三楼的代码应该是vb的,对应的c#代码应该是啥样的呢?
就是c#的代码哈


所有的时间均为北京时间。 现在的时间是 12:04 AM.