ObjectARX スレ
■ このスレッドは過去ログ倉庫に格納されています
0001デフォルトの名無しさん
NGNGObjectARX でカスタマイズしている人向けのスレ
作ってみました。 ;-)
0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNGまだこんな明るいうちは、出てこんよ。
0004デフォルトの名無しさん
NGNGとりあえず、ObjectARXの仕様は本があるけれど、設計には皆さん
どんな表現方法使います?
UMLとか使ったりする?
0005PeFileWrapper
NGNGR15 はいいとして、LTR7 を ARX でカスタマイズしてるヤツなんて、
何人くらいいるんだろう。たぶん、世界中で 100 人以下。
しかしそいつらは、ただある種のツールを利用しているだけ。
すなわち、LT に ARX をロードさせるツールだ。
じゃあ、LT に ARX をロードさせることができるヤツとなると、
これはもう、並のハッカーでは無理。
何を隠そう、実は漏れがそのひとりなんだけどね。(藁
00062
NGNG0007デフォルトの名無しさん
NGNGttp://www.codeproject.com/dll/hookimport.asp
こんな感じの DLL 作ってアレコレしないといけないんだろうなぁ。
漏れはそういったツール使うからいいや (w
0008デフォルトの名無しさん
NGNG> とりあえず、ObjectARXの仕様は本があるけれど、設計には皆さん
> どんな表現方法使います?
> UMLとか使ったりする?
設計なんて上司のインスピレーションで決まるんだ!!
設計なんて上司のメモ書きで決まるんだ!!
設計なんて上司が完成品見た瞬間意味が無くなるんだ!!
鬱だ氏のう
0009デフォルトの名無しさん
NGNGモードレスダイアログなどであるボタンが押されると、AcDbDatabase を
new して、その後 AcDbDatabase::loadDwgFile() で DWG ファイルを
読み込みます。この new された AcDbDatabase は別のボタンが押されるか、
モードレスダイアログが Destroy されるまで delete しないものとします。
AcDbDatabase を new するときにアクティブだったドキュメントを
その new した AcDbDatabase を delete する前にクローズしたりすると
AutoCAD が落ちてしまうことがあるのですが、なにか不味いのでしょうか?
0010PeFileWrapper
NGNGLTR6 だと大丈夫だが、LTR7 だと、やりすぎると時限爆弾がセットされる。
名前はあえて伏せておくが、
「某有名 Delphi で LT のカスタマイズができる国産ツール」
の初期のバージョンは、それに引っかかったんじゃないかと思う。
(別の理由かも知れんが)
あからさまにやってたからな。
0011PeFileWrapper
NGNGAcApDocument を持たない AcDbDatabase をビシバシ扱うのは、まだ難しいと思う。
ちゃんと扱おうとすると、非公開のクラスを使わなければならない。
たぶん AcDbHostApplicationServices 方面が吉。
ターゲットが別の箇所だったので、実は漏れも詳細は知らない。
DBX のホストアプリケーションを作るためのライセンスを持っていたら、
その情報が得られるはずだ。ただしライセンス料は目玉が飛び出るほどという。
ハクれなくもないとは思うが、かなり時間がかかるだろう。
となると、こういうところで聞くしかないが、はっきりと答えられるヤツなど、
ほとんどいないだろうな。
なにせ世の中には「AutoCAD のカスタマイズ = Lisp が常識」という連中が多い。
彼らにとって AcApDocument の存在しない世界などあり得ないし、
ARX を作ってたって、所詮、SDIの頭(R14 な頭)でしかないヤツが多いから、
MDI でかつドキュメントがないデータベースなんて、
たとえ大通りで質問しても無駄かも知れない。(→ http://www.mura.sh/ )
すまんな。
0012デフォルトの名無しさん
NGNGやってるデベロッパはいるのかな?
VBAに比べるとあまりにも情報が少ないもので。。。
4の言う通り、そうなるとUMLとか魅力的になってくるのだけれど。
0013でふぉるとノ名無シサン
NGNGあまり聞かないですね。
一度、どっかの掲示板でDBXの作り方を聞いていた人がいましたが
それ以外は聞かないです。
0014デフォルトの名無しさん
NGNGオブジェクト指向と言った所で、AutoCADのオブジェクト?と返されそ。
0015デフォルトの名無しさん
NGNGあっ、ゴメン。漏れも勘違いしてたかも。
AcDbEntity からの派生クラス方面のことかと思ってた。
> ADTみたいにオブジェクト間の関連を定義して
0016デフォルトの名無しさん
NGNGとあるスレで SPY++ の面白さを聞かれたんだけど、内容がスレ違いなので、
こっちに書かせてもらう。
実は AutoCAD LT 2000 のカスタマイズに関してなんだ。
このスレに来るヤツは知ってることだと思うが、
レギュラー版はカスタマイズできるが、値段が高い。
LT 版は値段は安いが、カスタマイズできない。
いや正確に言うと、カスタマイズ機能が塞がれている。
漏れはこいつをカスタマイズできるように、つい最近、ひん剥いて調教した。
このとき、いろんなツールを自分で作ってひん剥いたが、
既存のツールも利用した。そのひとつが SPY++ だ。
こういうツールを使えば、外側からではわからないことでも、
内側の動きを察知することができる。
他にも APIMON というのもある。こいつはもっとシゲキ的に「ググッ」とくる。
でもこういうツールを使えばいつでも「グフフ」ってなれるわけじゃない。
おまえだって、女なら誰でも立つってわけじゃあ、ないだろ?
「グフフ」な相手がいて、はじめて値打ちがある。
…と、まあこんな話を書こうと思ったが、スレ違いなので、
こちらに書かせてもらったというワケ。
あいつ、このスレ、わかるかなぁ...。
0017デフォルトの名無しさん
NGNG>AcDbEntity からの派生クラス方面のことかと思ってた。
まさにそれ。
ADT持ってないのでどういうオブジェクトモデルなのかは解らないけど、
ドアは自分がくっつく壁のインスタンスを保持する、みたいなことやってる
んでしょう?IFCの言うオブジェクト指向CADって奴。
そういうモデリングやってる人に聞いてみたかったんだ。
0018デフォルトの名無しさん
NGNGってことは、Object DBX のサブセット方面って事ですね。
MDT とか ADT とかの autodesk の上位製品群は、
カスタムオブジェクトの実体である .dbx と、その UI となる .arx を
うまくつかっていますね。
操作用の .arx が無ければカスタムオブジェクトはどうにもならないから、
図面をいじりたければ MDT なり ADT を買わないとイケナイ。
見るだけなら Object Enabler で Volo View でもみれるようになってるし。
やっぱ、これからの商売はこういった開発スタイルでいかないとダメなんだろうかなぁ
0019デフォルトの名無しさん
NGNGあっ、なるほど。それでよかったのか。
> ドアは自分がくっつく壁のインスタンスを保持する、みたいなことやってる
> んでしょう?IFCの言うオブジェクト指向CADって奴。
ふぅ〜ん、そゆこと、やってるんだ...。
てことは、たとえばその壁だけ勝手に AcDbEntity::erase() なんてしちゃあ、
逝っちゃうの?
0020デフォルトの名無しさん
NGNG確かにひとつの方向かもしれない。
でも MDT のカスタムオブジェクトが埋め込まれている AcDbDatabase は、
AcApDocument と関連づけられていない状態では、なんか落ちやすい。
>>9
も、そこに原因があるんじゃないかと睨んでる。
...なんか、あやしい。 →MDT のカスタムオブジェクト
0021デフォルトの名無しさん
NGNGいわゆるオブジェクト指向分析・設計だよね。
CADで扱う領域をこの手の概念で考えることはよくあるが、やってみると
本当に時間と手間がかかる。
やっぱさ、ADTとかMDTは良くやってるよ。さすがに。
>>19の言う通り、膨大なエラ−トラップが必要だし。。。
でも、面白いんだよね、こういうの。
今はObjectARX自体マイナ−だから、色々な意見あるとは思うのだけど。
0022デフォルトの名無しさん
NGNGふむ。確かに使う側からすると面白そう。…ARX(DBX) は大変そう。 -_-;
でもオブジェクト指向の分析と設計っていっても、
CAD で扱う分野すべてにそのまま適応できるわけではないよね。
建築系や機械系の CAD は実世界の「オブジェクト」を扱うわけだから、
当然、そのような考え方は自然にできる。
でも電気回路(など)の CAD で扱うものは、実世界のオブジェクトとは
必ずしも一致しない。実は漏れが作っているアドオンも電気回路なんだ。
たとえば回路図上では「コイル」や「接点」という全く異なるものに分かれていても、
器具配置図面上ではひとつのオブジェクト(=リレー)だし。
また電気回路ではひとつの物件が数十枚から数百枚の図面(DWG)からできているから、
コイルのある図面と接点のある図面は、ほぼ間違いなく、違う図面(=異なる DWG)
に存在してる。
つまり、たとえば「壁」と「ドア」が異なる DWG に存在しているみたいなもんだ。
21 のいうようなエラートラップが容易ではないことは察しがつくと思う。
だから実世界の「オブジェクト」というフレームワークで捉えるのは、
そのままではちょっと(かなり?)無理があると思う。
0023デフォルトの名無しさん
NGNG>器具配置図面上ではひとつのオブジェクト(=リレー)だし。
完璧に門外漢だし話題も読めてないんですが
これ読んで「それは集約やProxyを使う場面なんじゃないか?」と
思ったのは間違いですか?
0024デフォルトの名無しさん
NGNG泣き所かも知れないね。
土建屋なんて特に多いけれど、教科書どおりに事が進められることはまずない。
むしろ”なんでやねん”的不条理の方が多い気がする。
そういう”定常的なレアケ−ス(?)”に対してのパフォ−マンスを考慮しないと、
現実世界では運用できない”堅物”モデルができてしまう。
いわゆる業務(業界?)知識ってやつだね。
だからこそエラ−トラップが大変なんだと思うけど。。。。
人間の思い付きに対して論理もクソもないからね。
0025デフォルトの名無しさん
NGNGでも、結構クセものと思う。現実世界と混同しやすいんじゃないかと思うんだ。
むしろ、”リレ−”オブジェクトの責務として扱う方が素直かもしれない。
オブジェクト指向ってオブジェクトが主役というより、オブジェクトの持つ
責務こそが肝だと思うから。。。
0026名無しさん
NGNG0027名無しさん
NGNG0028名無しさん
NGNG0029名無しさん
NGNG0030名無しさん
NGNG0031デフォルトの名無しさん
NGNG確かにそういう考え方もあると思う。
しかし実世界の「リレー」という一個の部品は、
回路図面では複数の DWG に同時に分散して存在してる。
すなわち、通常、リレーにはコイルが 1 つと、接点が複数個ある。
それらが異なる DWG に別々に描かれるんだ。
だから実世界の「リレー」を、電気回路図上で、
ひとつのカスタムオブジェクトとして実装することは不可能だと思う。
「コイル」と「接点」を別々のカスタムオブジェクトとして実装することなら
可能だと思うけど、これらは通常、異なる DWG に分散してるので、
エラー処理はとても厄介だ。
「壁」と「ドア」のときみたいに単純にはいかない。
しかも回路図を作ってゆく過程においては、
「コイル」と「接点」が関連付けられていない状態も存在する。
この関連付けはオペレータがおこなうまでわからない。
たとえば原子と電子が分離しているプラズマみたいな状態っていえばいいかな。
なら MDT なんて全然関係ないかというと、そうでもない。
このようにして作られた回路図も、最終的には器具配置図面などが作られて、
リレーが何個…といった部品表を作ったりする。
器具配置図面などを描くときは MDT の機能は強力なので、
実際、MDT や Mechanical を使いたいというユーザは多い。
ところがここで >>20 の話に戻っちゃうんだ...。
MDT でただ保存するだけで、100 を超えるカスタムオブジェクトが
仕込まれてしまう。
おそらくこいつらが邪魔をするせいで、AcApDocument を開かずに
AcDbDatabase だけで処理を済ませることができなくなっているんだ。 ( >>9 )
0032デフォルトの名無しさん
NGNGいあるのか?ってことまで考えなきゃいけなくなりそう。
以外にInventerが出た理由もその辺にありそうな気もしちゃうね。
つまり、”ごわさんに願いまして”したかったとか・・・。
0033デフォルトの名無しさん
NGNGInventor って、名前はときどき聞くけど、AutoCAD との関係はどんな感じ?
> つまり、”ごわさんに願いまして”したかったとか・・・。
今さら DWG や DXF を捨てるなんて不可能だよね。
そういう意味も込めて、次期版では XML に期待…ってところかな。
0034デフォルトの名無しさん
NGNGそのあとしばらくして AutoCAD LT 2002 が出るんだろうな。
AutoCAD 2002 は R15 用の ARX もそのままで動くんだと。
まぁ、それはそれで嬉しいけど、それより、あんなバグや、こんなバグは
直っているのでしょうか。
>>31 的には、MDT6 のカスタムオブジェクトがどうなってるか気になるところ。
0035デフォルトの名無しさん
NGNGま、ADNので十分なんですけどね。
0036PeFileWrapper
NGNGオレが ObjectARX を勉強するときは、会社に良い実例がいっぱいあったので、
それをみて ObjectARX を理解していった。
どうも、あの本(タイトル忘れた)だけでは、よ〜わ〜らん。
もっとも、オレの本職は ARX「未満」の部分なんだけどね...。
SDK のヘッダにない関数をしらべたり、
AcEdCommandStack を乗っ取ったり、
LT が ARX の身元を調べている部分を…、おっと、危ない、アブナイ。(藁
0037でふぉるとノ名無シサン
NGNG久々の登場ですね。
ところで、ARX「未満」ってなに?
ARXまで煎かないってこと? → AutoLisp、VBA?
でも、AcEdCommandStackってARXだし・・・
0038PeFileWrapper
NGNG「久々」…って、おぉ、漏れのファンかぁ? でもサインはやれんぞ。 (藁
ARX「未満」ってのは、ARX では(ARX でさえ)どう逆立ちしたって不可能なこと。
たとえばの話、AcDbObject が AcDbDatabase に追加されたことは
AcDbDatabaseReactor で検知できるだろ? これは ARX「以上」。
じゃあ、その AcDbDatabaseReactor が AcDbDatabase に登録されたことが
検知できるリアクタってのは、あるかい? これが ARX「未満」。
現在のところ、たとえばこのような「リアクタのリアクタ」は、
ObjectARX 2000/2000i SDK では提供されていないし、
これを無理矢理作ろうと思っても、
AutoCAD に漏れも知らないような隠された裏口でもないかぎり、
C/C++ では実現不可能。
このような部分を ARX「未満」って書いたんだ。今の漏れの専門が、コレ。
憚(はばか)りながら、
腕の立つプログラマでさえ不可能なことをやってのけて、
人を幸せにすることができるひとのことを、
「ハッカー」という。
くれぐれも人を不幸にする「クラッカー」と混同せんでくれ、な。
0040PeFileWrapper
NGNGウッ、そう来るかぁ...。(汗 (汗 (汗
でも AutoCAD のバグのせいで、漏れも十分、不幸を経験してるので、
それでチャラということで、なんとかひとつ、お願いできないでしょうか? (藁
0041でふぉるとノ名無シサン
NGNG自動机の開発はその地雷を踏んでいないのだから、チャラというのは・・・
0042PeFileWrapper
NGNG自分達だけ地雷を踏まないということは、
地雷を敷設したのは自分達だからということではないのか?
ならチャラどころか、不幸にしているのは漏れではなくて、
奴等だという言い方もできると思われ。
0043でふぉるとノ名無シサン
NGNG自分達が不幸にならないための地雷では?
0044デフォルトの名無しさん
NGNGAcDbDatabase::deepCloneObjects() だとすぐに AcDbDatabase にクローンが
作成されてしまいますが、これを、AcDbDatabase に関連づけされないような
形でディープクローンする方法はあるのでしょうか? やはり、通常のクローン
とちがい、サブエンティティまでクローンするとなれば AcDbDatabase に関連
付けされていないとダメってことでしょうか?
自分でガリガリやるのは面倒ですが、やっぱり、それしかないかなぁ ...
0045デフォルトの名無しさん
NGNGchar szTextString[ 256 ];
.
.
.
lstrcpy( szTextString, pText->textString() );
思い切り漏れてるんだけど、こういうソースを見かけたときどうしたらいいんだ (鬱
0046デフォルトの名無しさん
NGNG見なかったことにして、屁をこいて、寝る。
0047デフォルトの名無しさん
NGNGdeep-clone して無名ブロックつくって、
一旦モデル空間に挿入してそれを AcDbEntity::explode() する…のか?
あぁ〜、面倒くさっ。
そんなことするくらいなら、漏れならさっさと自分でクローンするぞ。
そもそも、言ってることが、漏れにはいまひとつ、よ〜わ〜らん。
0048PeFileWrapper
NGNGage られてから、まだ 10 日しか経ってないのに...。
ところで海の向こうでは AutoCAD 2002/AutoCAD LT 2002 の出荷が
始まったみたいなんだけど、何か情報ない?
漏れ的には特に(勿論!?) LT が気になるんだが...。
誰かココ、見てたら、カキコきぼ〜ん。
0050デフォルトの名無しさん
NGNGAutoCAD LT 2002 に対応しているのをうたっているのはよいかも。
でも、後発アプリとしては
某アプリ(1)のように aclt.exe がインポートテーブルにないほうがいいなぁ。
某アプリ(2)のように AutoCAD の xxxxx×××× になってるほうがいいなぁ。
005149
NGNGふむ、そうだね。 LT 2002 対応表明一番乗りかな?
…ってーことは、去年、
>>10 > 「某有名 Delphi で LT のカスタマイズができる国産ツール」
が LT 2000i のときに増えたトラップに引っかかっていたことと、
ベータ板さえ出てないのにこんなに早く表明した(しちゃった?)ことから考えて、
LT 2002 ではきっと大きなトラップは増えていないわけだな。
とりあえずホッとしたってところかも。
漏れ的には OLE Automation が塞がれていたら面白いんだけどな...。
特にヒストリ関係とか。 (謎コレされたら、みんな騒ぐだろうな。 (藁
0052デフォルトの名無しさん
NGNG”Thank you for your information.”
美しい響きだ(Laugh)
0053デフォルトの名無しさん
NGNGどういうところがIntelliCAD屋さんって思ったの?
漏れはユーザじゃなくって、むしろ営業方面の人かなって思った。
ダウソしたらドネーション払うまで 30 日間は使えるみたいだけど、
誰か試してみた人、いるのかな?
もしいたら、レポートきぼ〜ん。
■ このスレッドは過去ログ倉庫に格納されています