//********************************************************** // C++BuilderによるIntelliCAD / ZwCAD ActiveXオートメーション // copyright(c) 2007 f.izawa // URL : http://izawa.web.infoseek.co.jp/ //********************************************************** // その5 #include "ZwCAD_TLB.h"// "IntelliCAD_TLB.h" void __fastcall TForm1::Button5Click(TObject *Sender) { IIcadApplicationDisp Icad; if (Icad.BindRunning()==0){ // ウィンドウが最小化されていれば戻す ZcWindowState wst =Icad.get_WindowState(); if (wst == zcMin) Icad.set_WindowState(zcNorm); // アクティブに HWND hWnd =(void *)Icad.get_HWND(); SetForegroundWindow(hWnd); IIcadDocumentDisp Idoc = Icad.get_ActiveDocument(); IIcadUtilityDisp Iuty = Idoc.get_Utility(); IIcadPointDisp pt0; IIcadEntityDisp Ient; if (Iuty.GetEntity((IDispatch**)&Ient, &pt0, WideString("\n図形を選択: "))==0){ AnsiString mes = Ient.get_EntityName(); mes = mes + "が選択されました."; Ient.Highlight(true); MessageBox(hWnd, mes.c_str(), "メッセージ", MB_OK); Ient.Highlight(false); AnsiString entname=Ient.get_EntityName(); if (entname.AnsiCompare("BlockInsert")==0){ IIcadBlockInsertDisp Iblk; Iblk.Bind(Ient); // 属性があれば... if (Iblk.HasAttributes) { Memo1->Lines->Clear(); IIcadAttributesDisp Iattrs = Iblk.GetAttributes(); IIcadAttributeDisp Iattr; for (int i=0;i< Iattrs.Count;i++){ Iattr = Iattrs.Item(Variant(i)); // 属性名 Memo1->Lines->Add(Iattr.get_TagString()); // その値 Memo1->Lines->Add(Iattr.get_TextString()); }; } } } Icad.Unbind(); } else{ MessageBox(0, "ZwCADは起動されていない", "メッセージ", MB_OK); } } // その4-2 #include "ZwCAD_TLB.h"// "IntelliCAD_TLB.h" void __fastcall TForm1::Button4Click(TObject *Sender) { IIcadApplicationDisp Icad; // 起動中のIntelliCADをバインド if (Icad.BindRunning()==0){ // ウィンドウが最小化されていれば戻す ZcWindowState wst =Icad.get_WindowState(); if (wst == zcMin) Icad.set_WindowState(zcNorm); // アクティブに HWND hWnd =(void *)Icad.get_HWND(); SetForegroundWindow(hWnd); IIcadDocumentDisp Idoc = Icad.get_ActiveDocument(); IIcadModelSpaceDisp Imspc = Idoc.get_ModelSpace(); IIcadUtilityDisp Iuty = Idoc.get_Utility(); IIcadSelectionSetsDisp Issets = Idoc.get_SelectionSets(); IIcadSelectionSetDisp Iss; Variant FilCode = VarArrayCreate(OPENARRAY(int,(0,0)),varSmallint); FilCode.PutElement(0, 0); Variant FilData = VarArrayCreate(OPENARRAY(int,(0,0)),varVariant); FilData.PutElement(WideString("Circle"), 0); Iss=Issets.Add(WideString("ss_test")); try{ if (Iss.SelectOnScreen(FilCode,FilData)==0){ Edit1->Text = IntToStr(Iss.get_Count()); Iss.Highlight(false); Iss.set_Color(zcRed); Iss._Update(); } } __finally{ Iss.Delete(); } Icad.Unbind(); } else{ MessageBox(0, "ZwCADは起動されていない", "メッセージ", MB_OK); } } //その4-1 #include "ZwCAD_TLB.h"// "IntelliCAD_TLB.h" void __fastcall TForm1::Button4Click(TObject *Sender) { IIcadApplicationDisp Icad; // 起動中のIntelliCADをバインド if (Icad.BindRunning()==0){ // ウィンドウが最小化されていれば戻す ZcWindowState wst =Icad.get_WindowState(); if (wst == zcMin) Icad.set_WindowState(zcNorm); // アクティブに HWND hWnd =(void *)Icad.get_HWND(); SetForegroundWindow(hWnd); IIcadDocumentDisp Idoc = Icad.get_ActiveDocument(); IIcadModelSpaceDisp Imspc = Idoc.get_ModelSpace(); IIcadUtilityDisp Iuty = Idoc.get_Utility(); IIcadSelectionSetsDisp Issets = Idoc.get_SelectionSets(); IIcadSelectionSetDisp Iss; /* for (int i = 0;iText = IntToStr(Iss.get_Count()); Iss.Highlight(false); Iss.set_Color(zcRed); Iss._Update(); } } __finally{ Iss.Delete(); } Icad.Unbind(); } else{ MessageBox(0, "ZwCADは起動されていない", "メッセージ", MB_OK); } } //その3 #include "ZwCAD_TLB.h"// "IntelliCAD_TLB.h" void __fastcall TForm1::Button3Click(TObject *Sender) { IIcadApplicationDisp Icad; // 起動中のIntelliCADをバインド if (Icad.BindRunning()==0){ // ウィンドウが最小化されていれば戻す ZcWindowState wst =Icad.get_WindowState(); if (wst == zcMin) Icad.set_WindowState(zcNorm); // アクティブに HWND hWnd =(void *)Icad.get_HWND(); SetForegroundWindow(hWnd); IIcadDocumentDisp Idoc = Icad.get_ActiveDocument(); IIcadModelSpaceDisp Imspc = Idoc.get_ModelSpace(); IIcadLibraryDisp Ilib=Icad.get_Library(); IIcadPointDisp pt0; pt0=Ilib.CreatePoint(100,200,0); IIcadCircleDisp Icircle = Imspc.AddCircle(pt0,300); Icircle.set_Color(zcYellow); Icircle._Update(); IIcadViewportDisp Iview=Idoc.get_ActiveViewport(); Iview.ZoomExtents(); } else{ MessageBox(0, "ZwCADは起動されていない", "メッセージ", MB_OK); } } //その2 #include "ZwCAD_TLB.h"// "IntelliCAD_TLB.h" void __fastcall TForm1::Button2Click(TObject *Sender) { IIcadApplicationDisp Icad; // 起動中のIntelliCADをバインド if (Icad.BindRunning()==0){ // ウィンドウが最小化されていれば戻す ZcWindowState wst =Icad.get_WindowState(); if (wst == zcMin) Icad.set_WindowState(zcNorm); // アクティブに HWND hWnd =(void *)Icad.get_HWND(); SetForegroundWindow(hWnd); IIcadDocumentDisp Idoc = Icad.get_ActiveDocument(); IIcadModelSpaceDisp Imspc = Idoc.get_ModelSpace(); IIcadUtilityDisp Iuty=Idoc.get_Utility(); IIcadPointDisp pt0; IIcadEntityDisp Ient; if (Iuty.GetEntity((IDispatch**)&Ient, &pt0, WideString("\n図形を選択: "))==0){ AnsiString mes = Ient.get_EntityName(); mes = mes + "が選択されました."; Ient.Highlight(true); MessageBox(hWnd, mes.c_str(), "メッセージ", MB_OK); Ient.Highlight(false); AnsiString entname=Ient.get_EntityName(); if (entname.AnsiCompare("Line")==0){ IIcadLineDisp Iline; Iline.Bind(Ient); IIcadPointDisp pt1,pt2; pt1=Iline.get_StartPoint(); pt2=Iline.get_EndPoint(); Edit1->Text = FloatToStr(pt2.get_x()); Edit2->Text = FloatToStr(pt2.get_y()); Iline.Unbind(); } } else{ MessageBox(hWnd, "何も選択されません.", "メッセージ", MB_OK); } Icad.Unbind(); } else{ MessageBox(0, "ZwCADは起動されていない", "メッセージ", MB_OK); } } //その1 #include "ZwCAD_TLB.h"// "IntelliCAD_TLB.h" void __fastcall TForm1::Button1Click(TObject *Sender) { // オブジェクトのインターフェースを作成 IIcadApplicationDisp Icad; // 起動中のIntelliCADをバインド if (Icad.BindRunning()==0){ // ウィンドウが最小化されていれば戻す ZcWindowState wst =Icad.get_WindowState(); if (wst == zcMin) Icad.set_WindowState(zcNorm); // アクティブに SetForegroundWindow((void *)Icad.get_HWND()); IIcadDocumentDisp Idoc = Icad.get_ActiveDocument(); IIcadModelSpaceDisp Imspc = Idoc.get_ModelSpace(); IIcadUtilityDisp Iuty=Idoc.get_Utility(); IIcadPointDisp pt0,pt1,pt2; if (Iuty.GetPoint(pt0,WideString("\n始点を指示: "),&pt1)==0){ Edit1->Text = FloatToStr(pt1.get_x()); Edit2->Text = FloatToStr(pt1.get_y()); if (Iuty.GetPoint(pt1,WideString("\n終点を指示: "),&pt2)==0){ Edit1->Text = FloatToStr(pt2.get_x()); Edit2->Text = FloatToStr(pt2.get_y()); // 線分を作成 IIcadLineDisp Iline = Imspc.AddLine(pt1,pt2); // 赤色に Iline.set_Color(zcRed); // 更新 Iline._Update(); } } Icad.Unbind(); } else{ MessageBox(0,"ZwCADは起動されていない","メッセージ",MB_OK); } }