「objectarx」タグアーカイブ

objectarx:ブロック名は英数は大文字になる

objectarxで、ブロックの名称で何やら違った動作に
ブロック名称に例えば
autocad上で”mm管”は、”mm管”の名前だが
objectarxで”mm管” と作成してあるブロックは
拡張オブジェクトの”mm管”は名前を取得すると”MM管”となる
覚えていたほうが良いかも知れない。
日本語の2バイト文字は明確に表示されるが英文字は、大文字になるので
属性名が合致しない。

//ブロックのみに限定
if ((tr.GetObject(btrId, OpenMode.ForRead).GetType().FullName.Equals(“Autodesk.AutoCAD.DatabaseServices.BlockReference”)))
{
try
{
BlockReference btr = (BlockReference)tr.GetObject(btrId, OpenMode.ForRead);
//オブジェクトの状態
Entity ent = tr.GetObject(btrId, OpenMode.ForRead) as Entity;
OHandle = btrId.Handle;
OID = btrId;
//基本画層名
layername = btr.Layer.ToString();
//ブロックの位置を取得
pol = btr.Position;
Rotation = btr.Rotation.ToString();
if (ent != null)
{
BlockReference br = ent as BlockReference;
if (br != null)
{
BlockTableRecord bd = (BlockTableRecord)tr.GetObject(br.BlockTableRecord, OpenMode.ForRead);

// … to see whether it’s a block with
// the name we’re after
switch (blockName)
このブロック名がmmなどの英文字は、大文字になる。

autodesk:今までの設定の整理

gimpで綺麗になったところで、行儀の悪いautodeskの整理も行う

自己責任だが
行儀が悪いのは、常 何故なら、ようやく2017ぐらいから

AppData\Roaming\Autodesk
AppData\Local\Autodesk
ここに集約されてきたので
R22.0
など適当すぎる煩雑で、だからといって削除してはいけないフォルダもあるのでとりあえず
いじれるのは、
Autodesk AutoCAD ○○ 2019 自分がライセンスのみ
ちなみに2019だと R23.0
等のアプリ名のフォルダ 2016 2017 2018とかに関するのは全て消したというか避難してもとに戻せるようにして削除
SSDの圧迫を非常に助けてくれる。
何故かは、Autodeskって毎年そのブームでアプリやソフト手当たり次第作る、作る、体験も え?
という程度に、頻度よく、インスコされる。
しかーし! 次に年には、継続するものもあれば、ソフトやアプリ自体無くなる!
おもしろすぎ! ワロタ
悲しき嵯峨!
そうすると、auotcad本体のライブラリ継承すればいいが、これは保証されない。
そのままライブラリを使いたければ、新しくautodesk製品を購入しなければ存在すら出来ない最近のライセンス仕様!
2005のライブラリを利用したサードパティは2005のautocadが入っている事が前提。
updateの場合は、2005のライセンスを新しくしたので2006の以下は入っていたらOUT!
2006だと、2005のクラスライブラリが変わっているのでサードパティは使えないって事。
ライブラリが一部の特殊なクラスをザックリ参照しているとそのライブラリとあるか無いかで問題が発生するという具合。
サードパティの製品はこれが致命的。
2005は残す場合は、2006の新しいライセンスを購入する必要があるってこと。
これがあったから、大元とライブラリから自分でクラスを引っ張り出し自作した方が被害は最小限!
今度は、VBAが使えん!保証しない!
とあっさり言われて、何じゃこの野郎て事で、Micorosoftの今後のOSはC#による・・を信じて全てこれにへ移行
autodeskが2年後にVBA復活! 全く振り回された。!
実際もっさりしているのは、FrameNetだから仕方ないが、自作のnetアセンブリは非常に早く、安定して来ているのは気のせいか?

C:\Program Files\Autodesk
の同じ様に必要な自分がライセンスしているフォルダ以外はいらない
但、日付を見て、インストと同日なのは消さないほうがいい。

C:\ProgramData\Autodesk
個々は非常に怪しい
消せるのは、以前にライセンスして今は利用していない xp、win7などからupdateで現在に至る場合は入念に確認して削除する。

これで、1GBは節約できるし、起動の余計な早くなる

objectarx:2019 の利用の準備

まず、例によって例の如くだけど、autocad 2019に更新したのでObjectARXも利用したい。
実際のところObjectARX_2018でも、有効にできるのだが、変更出来ないのでその手法
まず必要になるのが開発するための条件
ObjectARX_2019を更新して分かりました。
Visual studio 2017が最低限必須です。
※ Visual studio 2015でも利用できるようですが既にVisual studio 2015が無い

ここで挫けそうになりましたが、行いました。
まずはこれから確認
Windows10は 1709以上にする必要があるようです。
※巷では、windows10が次のビルド1803が今日配信されると言われましたが、とりあえず、ブルーバックの更新を見て躊躇
.NET Framework 4.7 SDK が必要
アプリと機能
vs2017 の変更を起動
SnapCrab_NoName_2018-4-30_13-42-18_No-00

こんな感じでチェックすればネットから導入してくれます。

Autodesk_ObjectARX_2019_Win_64_and_32_Bit

をautodeskさんからダウンロードします。
今回は早かった。 有難うございます。
2019のインストも簡単でした。
ライセンスログインでupdateの表示が出ているのでDLしてシリアル表示されているのでそれでインスト、即認証がライセンスされましたと表示。
但、またCUI絡みでクラッシュエラーが出るようで、本当にこれわざとだろと思うぐらい毎年続けてくる・・・信頼薄・・
現行のインストなら問題ない変更の場合にクラッシュなので
とりあえず現在は問題ない。
そこで完了したので、ObjectARXが、また時間かかるかと思っていたのですが、既に、サイトに掲示されていたので、早速ダウンロード出来ました。
即、インスコ

必要となるのは、

Autodesk_ObjectARX_2019_Win_64_and_32_Bit\inc
Autodesk_ObjectARX_2019_Win_64_and_32_Bit\inc-x64

場合によって必要となるのが、展開されたフォルダ 例えばC:\Autodesk
\Autodesk_○_Win_64bit_DLM
\x64
のライブラリ群
そのほとんどが利用できます。

そのライブラリを、変更して再ビルドで問題なく完了しました。

C:\Autodeskは、かなり前のフォルダも有ったのだが、近頃前ビルドが残っていた場合ライセンスに問題があるそうなのでupdateライセンスの場合はインスト後は、前ビルド(現在利用できてライセンスされている以外を一切消したほうがよろしいみたい。

Nuget.Configを用意して一元管理すると助かる。

Nuget からは、”autocad.net”  “ObjectARX” で検索できるけど完全ではないのでローカルインストの方が便利