Grossa Speaks Final

コンピュータに関するテーマを
気の向くまま取り上げています。
(時々雑談...)

DenSin 作成ノート その4

2006年07月18日 | Programming
以下は失敗したコード。うまくいかない。


unit UntiDenSin;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ComObj, StdCtrls;

type
TForm1 = class(TForm)
Button2: TButton;
Edit1: TEdit;
procedure Button2Click(Sender: TObject);

private
{ Private 宣言 }
public
{ Public 宣言 }
end;

var
Form1: TForm1;
ICAD: OLEVariant;
PosA: OLEVariant;
ICADHWND: HWND;
BlkOutName: string;
BlkOnlyName: string;
BlkInName: string;
BlkName: string;
BlkX,BlkY: string;
BlkAngle: string;
IsBlk: string;
MyIndex: integer;


implementation

{$R *.dfm}

procedure TForm1.Button2Click(Sender: TObject);
begin
ICADHWND:=FindWindow('IntelliCADApplicationWindow',nil);

if IsWindow(ICADHWND) then
begin
SetForegroundWindow(ICADHWND);

//IntelliCADを検出
Icad := GetActiveOleObject('ICAD.Application');

//外部ブロックのパス
BlkOutName :='C:CADDenBuroS42KonsentoCT01.dwg';

//ブロックのみの名前
MyIndex := LastDelimiter('',BlkOutName);
BlkOnlyName := BlkOutName;
Delete(BlkOnlyName,1,MyIndex);

MyIndex := LastDelimiter('.',BlkOnlyName);
Delete(BlkOnlyName,MyIndex,4); //少し乱暴なやりかた
//ShowMessage(BlkOnlyName);


//内部ブロックに同じ名前のブロックがあるか
//Icad.RunCommand('(tblsearch "block"'+ '"'+BlkOnlyName+ '"'+')'+#13);
//Icad.RunCommand('(setq mycmd (getvar "lastprompt"))'+#13);
//Icad.RunCommand('(setvar "USERS1" mycmd)'+#13);
//Edit1.Text := Icad.ActiveDocument.GetVariable('USERS1');
//IsBlk := Icad.ActiveDocument.GetVariable('USERS1');
Icad.RunCommand('(if (tblsearch "block" "CT01")(setq BlkName BlkOnlyName)
(setq BlkName BlkOutName))');
// IsBlk := 'hello';
// if IsBlk <> '' then
// BlkName := BlkOnlyName
// else
// BlkName := BlkOutName;



//尺度(X,Y方向)
BlkX := '50.0';
BlkY := '50.0';

//角度
BlkAngle := '0.0';


//ブロックを挿入する
Icad.RunCommand('INSERT'+#13+BlkName+#13+'0,0'+#13+BlkX+#13+BlkY+#13+BlkAngle+#13);
end

else
ShowMessage('IntelliCAD is nowhere');
end;

end.

最新の画像もっと見る

コメントを投稿