CyberChaos(さいばかおす)

プログラミング言語、トランスパイラ、RPA、ChatGPT、データマイニング、リバースエンジニアリングのための忘備録

差押予告通知書が届いたニダ(TДT)アイゴ~アイゴ~

2023-06-29 21:55:32 | 日本霊能者連盟・日コン連企画株式会社は詐欺会社、山本隆雄は詐欺師!

あーんあーん大手前年金事務所から差し押さえ予告書が届いたよ。今月は月末に均等割りの法人市民税・法人府民税・県民税を支払わなくてはならないので36万円ものお金がありません。 - ハッカー伝言板改めえむびーまんの日記帳(山本隆雄ブログ)

あーんあーん大手前年金事務所から差し押さえ予告書が届いたよ。今月は月末に均等割りの法人市民税・法人府民税・県民税を支払わなくてはならないので36万円ものお金がありません。 - ハッカー伝言板改めえむびーまんの日記帳(山本隆雄ブログ)

あーんあーん大手前年金事務所から差し押さえ予告書が届いたよ。今月は月末に均等割りの法人市民税・法人府民税・県民税を支払わなくてはならないので、お金がありません。...

goo blog

ざまあwww

因果応報は続くよどこまでも♪♪♪www

将棋もできないくせに藤井竜王の師匠の師匠とかほざく詐欺師www

2023-06-29 02:13:51 | 日本霊能者連盟・日コン連企画株式会社は詐欺会社、山本隆雄は詐欺師!

昨日著名な私の弟子がきました。藤井聡太の師匠の師匠が、なんとこの私になります - ハッカー伝言板改めえむびーまんの日記帳(山本隆雄ブログ)

昨日著名な私の弟子がきました。藤井聡太の師匠の師匠が、なんとこの私になります - ハッカー伝言板改めえむびーまんの日記帳(山本隆雄ブログ)

昨日、著名な私の弟子が来ました。当ブログで名前を出すことはできません。藤井聡太に自身が開発した将棋ソフトが使われているということで、藤井聡太の実質師匠に当たりま...

goo blog

は?
は?
は?

藤井竜王大先生の師匠の師匠?

バカなの?死ぬの?www

将棋もできないくせに何ほざいてるんだか?www

6枚落ちでも絶対に勝てない、いや10枚(飛角銀x2,桂x2,香x2)落ちでも無理www

そもそも将棋のやり方すら知らないんじゃないのか?www

霊感商法詐欺師静香が露巫女と改名して復活だとよwww

2023-06-27 05:54:45 | 日本霊能者連盟・日コン連企画株式会社は詐欺会社、山本隆雄は詐欺師!



本日静香先生から電話。完全復帰できるとか。新しい名前は露巫女先生。白魔術や除霊。恋愛関係の鑑定。男VS男もOKとか。 - ハッカー伝言板改めえむびーまんの日記帳(山本隆雄ブログ)

本日静香先生から電話。完全復帰できるとか。新しい名前は露巫女先生。白魔術や除霊。恋愛関係の鑑定。男VS男もOKとか。 - ハッカー伝言板改めえむびーまんの日記帳(山本隆雄ブログ)

本日静香先生から電話。完全復帰できるとか。以前は、入退院を繰り返していました。日本霊能者連盟では、累計売上1位の先生です。新しい名前は露巫女(つゆみこ)先生。タ...

goo blog

露巫女と改名だとよwww

本当に懲りないバカチョンババアやなwww

散々ウソこいて裁判で俺様に完敗したのに、もう忘れたのか?www

ちなみにいったん非公開にしておいた記事を全部公開してやるからなwww

虚偽の求人広告を出す超絶ブラック(株)YOLO

2023-06-25 10:45:46 | 求人詐欺会社
>>新着正社員
↑大嘘wwwただの偽装請負多重派遣www

エンジニア|
>>未経験可
↑大嘘www若くて転職回数の少ない即戦力を安く雇いたいの間違い。または若くて美人・かわいい、派遣先の正社員の嫁さん候補募集www

✨髪型服装自由✨土日祝休み
株式会社YOLO
第二新卒歓迎⭐即日面接OK⭐

>>スマホアプリやECサイトのデザイナー

stable diffusion様があるからオワコンwww

>>【学歴不問✨未経験OK✨髪色・髪型・ネイル・服装自由】正社員採用

偽装請負派遣は正社員じゃないからな、噓書くなよボケ!

>>IT・WEB業界に興味があればOK✨将来的には自社の開発としてアプリ開発もお任せします

地頭の悪い大卒には到底無理な話なんだがwww
ましてや中卒・高卒なんざwww

東京都 豊島区 池袋駅

>>月給 25万円 ~ 60万円

支払った実績も証拠もないのに噓書くな!
本当は15~26の間違いだろーが!

事務・オフィスワーク

>>残業なし駅近5分以内在宅OKリモート面接OK交通費支給面接時マスク着用
カンタン応募

残業なしは誰がどう考えてもバレバレの噓。実際は長時間残業でしかもサービス残業www

>>基本情報の入力だけで応募できる求人です。

実際は転職理由を根掘り葉掘り訊かれた挙げ句、中高年は経験があっても不採用確定。

高返信率
簡単応募など Indeed 上での応募機能を利用できる求人に関して、過去 30 日間に Indeedを通じて75%以上の応募に返信しました。
募集要項
仕事内容
職務内容
【未経験OK✨エンジニア正社員採用】

>>未経験でも研修制度がしっかりしているのでご安心ください⭐

実際は研修制度なんか全く無い!ただの偽装請負多重派遣のピンハネ屋だから仕事を教えることすらできず、ただの丸投げwww

✅未経験OK→未経験不可www
✅学歴・経験不問→中卒・高卒不可、Fラン大不可www
✅リモート・在宅あり→リモート・在宅不可
✅昇給あり→昇給無し
✅賞与あり→賞与なし
✅ベンチャー企業→ただの無能の丸投げピンハネ屋
✨研修充実でスキルアップできる→ただの無能の丸投げピンハネ屋だから何のスキルも身に付かない

✅髪色ネイル服装自由→この糞会社を経営してる奴自体がデブサイクのヒキオタ&キモいロン毛のアッパラパーオッサンだからなwww

✅【9:30~18:30】 定時退社で仕事終わりが充実✨→定時で帰れるわけがない。終電まで残業または泊まり込みwww

【こんな方、向いてるかも...!!】
✅事務やデータ入力などの経験がある!→とてもじゃないが、最低限でも数学・物理が好きじゃないと絶対無理!
✅WEB業界に興味がある!サイト運営やアプリ開発をやってみたい!→webがどうのこうの言ってる時点で話にならん!最低でもJavaやC/C++/C#ができんとなwww
JavascriptやPHP、SQL?ただのホムペ作成厨だろwww
✅アルバイトのシフト作成や在庫管理の経験がある方も⭕!

具体的には.....

JavaやPHPなどの言語を扱いどこでも通用するスキルを身に着けられます!→とてもじゃないが、偽装請負多重派遣ピンハネ屋には無理だわwww

Web系の様々なスキルを活かせるプロジェクトがあるのでこれからの時代活躍間違いなし!→ただの偽装請負多重派遣ピンハネ屋は無数にあるから、テメエらみたいな単価競争やってるような無能なブラックはつぶれるぞwww

開発エンジニア、インフラエンジニア等、”やりたい”に合わせてキャリアを選べる!
★~☆~★~☆~★~☆~★~☆~★~☆~★~☆~★~☆

【株式会社YOLOの主な事業】

WEBコンサルティング
WEBサイト制作・保守
WEBサイト分析・改善コンサルティング
テクニカルサポート(ヘルプデスク)
─────────────────────────

求める人材
✨完全未経験OK✨学歴不問✨

パソコン(Excel、Word等)の使用が可能な方

─────────────────────────

経験者ももちろん歓迎✨!

*もちろん、PLやPMなどでのマネジメント経験をお持ちの方も歓迎します。

*何らかのIT分野に携ったことがある方/実務未経験でも、ITスクールや情報系の学校に通っていた人は優遇いたします。
*全くの未経験の方でも可

─────────────────────────

アピールポイント
【エンジニアの"やりたい・なりたい"に応えられる環境】

取引先企業数1500社以上⭕

経験がある方、キャリアアップしたい方!
「テスターから開発に挑戦したい」「RustやGO等人気言語を扱ってみたい」
など、エンジニアのキャリアアップや
キャリアチェンジの希望に応えられる体制が整っています✨

勤務時間・休日
勤務時間
■9:30~18:30(実働8時間) ※現場により一部変動あり

■平均残業時間5時間✨定時退社でプライベートも充実

休暇・休日
<年間休日122日以上>
完全週休2日制(土・日)
祝日休み

~⭐その他お休みも充実⭐~
年末年始休暇
慶弔休暇
有給休暇
特別休暇
長期休暇

勤務地
勤務地所在地
東京都 豊島区 池袋駅
勤務地備考
東京本社オフィス:渋谷区神宮前6-23-4

【転勤なしで選べる勤務先多数】
プロジェクト先(東京・神奈川・埼玉・千葉など)

※勤務地は希望を考慮し決定します

給与・待遇
試用期間
試用期間:6か月
試用期間中の労働条件:同条件
待遇・福利厚生
完全未経験~経験者:月給21万8,840円~70万円

※経験・能力を考慮の上、当社規定により優遇いたします。
※上記給与は固定残業代を含み、超過分は別途支給します。
※試用期間中は給与以外の条件に変動なし
※試用期間中は月給21万2,500円~(固定残業代 を含み、超過分は別途支給)
給与は実績により正当に評価し給与で還元します。

【諸手当】

交通費支給(月2万5000円まで)※社内規定あり
固定残業時間を超える時間外手当
出張手当
役職手当
その他
【面接1回✨人柄採用】

代表もしくは採用統括者との面接1回のみの選考です。

雇用形態: 正社員

給与: 250,000円 - 600,000円 月給

相手の持駒全取りで勝利www

2023-06-24 02:22:04 | 日記
ぴよ将棋でひよ子から持駒全取りをしていじめてみたwww
かわいそうだろ?www


雁木みたいなのを組んでから地下鉄飛車をやろうとしたら、相手が角道を開けて角で突っ込んできて自滅www
角をタダ取りしてから崩壊し、ガンガン駒を取りまくった。
本当はもっと早く詰ますことができたが、敢えて詰まさず、駒を全取りしてみた。

Visual Studio Code上にC#開発環境を構築する方法

2023-06-17 17:20:07 | Visual C#

Microsoft、Visual Studio Code上にC#開発環境を構築できる拡張機能「C# Dev Kit」を発表

https://codezine.jp/article/detail/17892

https://marketplace.visualstudio.com/items?itemName=ms-dotnettools.csdevkit

これからVisual C#を始めようとしていてVisual Studio Communityのインストールで悩んでいる者に朗報?

特にCドライブがいっぱいでインストールできない者にとって有効か?

俺もその一人。AutoCADとかごついアプリばかり入っていてCドライブの容量を圧迫されている場合、深刻な問題だ。

どうあがいてもCドライブにインストールされてしまうので、VSCodeしか入れられなかった。

Visual Studio Code上で開発環境を構築できるらしい。


GitHubの魔界に潜入

2023-06-11 05:03:13 | CATIA
GitHubは魔界だ!

今まで必死になってググっても、ChatGPTに質問しても出てこなかった情報がウジャウジャ出てくる。

ただし、ほとんどが外国語。
日本語で書かれた情報は皆無に等しい。
だから翻訳しなければならない。

なぜ日本のIT業界が遅れているのかというと、その理由はGitHubの魔界を探索すれば良く分かるであろう。

罪日バカチョンチャンコロ売国奴産業スパイが特許だの著作権だの企業秘密だのほざいてひた隠しにし、意図的に間違ったことを書籍として出版する。

仕事では新人教育を軽視し、未経験者・転職回数の多い者、中高年を徹底的に拒絶し、排除し、採用しない。

これじゃあ日本のIT業界のレベルがベトナムや北朝鮮といった極貧発展途上国の足元にすら及ばないのも当たり前だ。

以下の情報も本当かどうかはあやしい。

とりあえずCATIAをPythonで自動化する例が出ていたので、本当かどうかは別として、とりあえず転載しておく。

他にはAutoCADのプラグインをC#で作ったりしているのもあった。

GitHubの検索ボックスCATIAやAutoCADなどのキーワードを入れれば出てくる。

https://github.com/robertpardillo/rice#installing-getting-started


Catia を制御するための Python API


CATIA V5を使用して3Dモデルの作成を簡単に自動化するためのAPIです。RICE は、ソリッドとサーフェスを操作するためのいくつかの操作を実装します。


インストール

はじめに

ライブラリのインストール: src フォルダーをダウンロードし、シェル経由でインストールします。


python setup.py


それからインポートして、


from Rice.application import Application


ライブラリのコピー: src フォルダーをダウンロードし、プロジェクトのルート フォルダーにコピーします。 次に、通常のモジュールと同様にインポートします。


from Rice.application import Application


(例)キューブ




from Rice.application import Application

import os


# Initializing connection with Catia


app = Application()


# Get created parts


parts = app.get_parts()

part = parts[0]


# Get created bodies


body = part.get_bodies()[0]


# Add a sketch on XY plane


sketch = body.add_sketch('xy')


# Add a close path to sketch


sketch.close_path([[0,0],[50,0],[50,50],[0,50]])


# Generating "Pad" operation with "sketch" and 50 mm height


pad = body.pad(sketch, 50)


# Save part, name.CatPART


part.save(os.path.join(os.path.abspath(''),'name'))


コンプレッサーブレード





from Rice.application import Application

import os import pickle


# Getting blade geometry


f = open('blade_data', 'rb') blade_data = pickle.load(f) args=blade_data


# Initializing connection with Catia


app = Application()


# Get created parts


parts = app.get_parts()

part = parts[0]


# Get created bodies


body = part.get_bodies()[0]


# Formatting data


list_profiles_up = [args[i]['profile_UP']

for i in range(len(args)-1)] list_profiles_down = [args[i]['profile_DOWN']

for i in range(len(args)-1)] spline_extrados = list() spline_intrados = list()

list_z = [args[i]['r']

for i in range(len(args)-1)]

for i, n, j in zip(list_profiles_up, list_profiles_down, list_z):


# Creating plane


plane = part.plane('Offset from plane', 'XY', j * 1000)


# Adding sketch on "plane"


sketch = body.add_sketch(plane)


# Adding 2D spline to "sketch"


spline = sketch.spline2D([[p[0] * 1000, p[1] * 1000] for p in i]) spline_extrados.append(spline)


# Adding sketch on "plane"


sketch2 = body.add_sketch(plane)


# Adding 2D spline to "sketch2"


spline2 = sketch2.spline2D([[i[0][0]*1000, i[0][1]*1000]]+[[p[0] * 1000, p[1] * 1000] for p in n]+[[i[-1][0]*1000, i[-1][1]*1000]]) spline_intrados.append(spline2)


# Creating leading edge spline


spline_delante = part.spline([[args[i]['profile_UP'][0][0]*1000, args[i]['profile_UP'][0][1]*1000, args[i]['r']*1000]


for i in range(len(args)-1)])


# Creating trailing edge spline spline_detas = part.spline([[args[i]['profile_UP'][-1][0]*1000, args[i]['profile_UP'][-1][1]*1000, args[i]['r']*1000]

for i in range(len(args)-1)]) fill = list() for i in range(len(spline_intrados)-1):


objs = list() objs.append(spline_delante) objs.append(spline_intrados[i]) objs.append(spline_detas) objs.append(spline_intrados[i+1])


# Creating "fill"


fill.append(part.fill(objs))

objs = list() objs.append(spline_delante) objs.append(spline_extrados[i]) objs.append(spline_detas) objs.append(spline_extrados[i + 1])


# Creating "fill" fill.append(part.fill(objs)) part.update()


# Joining all the created surfaces join = part.join(fill)

part.update()


# Exporting model with "stl" format, test.stl part.export_data(os.path.abspath('')+r' est','stl')


部品設計

本文を追加


from Rice.application import Application


# Initializing connection with CATIA

app = Application()


# Getting "parts" created. Once CATIA connection is enabled, a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Adding "Body" to "part". part.add_body()


# Getting created "bodies"


bodies = part.get_bodies()


パッド


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts() part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Add a close path to sketch.


sketch.close_path([[0,0],[50,0],[50,50],[0,50]])


# Creating a "pad" 50 mm height from "sketch".


body.pad(sketch, 50)


ポケット


from Rice.application import Application


# Initializing connection with CATIA app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Add a close path to sketch.


sketch.close_path([[0,0],[50,0],[50,50],[0,50]])


# Creating a "pad" 50 mm height from "sketch".


pad = body.pad(sketch, 50)


# Creating a "sketch" on the upper face of the "pad".


sketch2 = body.add_sketch(pad['up'])


# Adding a circle with centre (25mm,25mm) and radius 10 mm.


sketch2.circle([25,25], 10)


# Creating a pocket from "sketch2".


body.pocket(sketch2,10)


スケッチ 2D ライン


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Creating 2D line, (0,0) start point and (10,10) end point.


sketch.line2D([0,0],[10,10])


アーク


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Creating an arc with (0,0) centre, 20 mm radius and from 0 to 270 degrees.


sketch.arc([0,0],20, 0, 270)




from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Creating a (0,0) center and 20mm radius circle sketch.circle([0,0],20)


パスを閉じる


from Rice.application import Application


# Initializing connection with CATIA

app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Creating a close path with a list of points.


sketch.close_path([[0,0],[10,0],[15,7.5],[15,15],[0,15]])


2D スプライン


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Add a spline 2D through a list of points.


sketch.spline2D([[0,0],[10,0],[15,7.5],[15,15],[0,15]])


点による円弧


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()


part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY') sketch.arc_by_points([0,0],[10,0],20, 0)


制約


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Generating close path


lines = sketch.close_path([[0,0],[50,0],[50,50],[0,50]])


# Adding a Length constraint to the first line of "lines".


const = sketch.set_constraint(5, lines[0])


# Adding an Angle constraint between the first and the second line of "lines".


const2 = sketch.set_constraint(6, lines[0], lines[1])



生成形状設計

塗りつぶし


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Creating spline 2D on "sketch"


sketch.spline2D([[0, 15], [5, 10], [10, 5], [20, 15]])


# Creating 3D lines.


line1 = part.line3D([0, 15, 0], [0, 15, 15])

line2 = part.line3D([20, 15, 0], [20, 15, 15])

line3 = part.line3D([0, 15, 15], [20, 15, 15])


# Join with a surface "line1", "sketch", "line2" and "line3".


part.fill([line1, sketch, line2, line3])


加入


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Add a "sketch" on "XY" plane.


sketch = body.add_sketch('XY')


# Creating spline 2D on "sketch"


sketch.spline2D([[0, 15], [5, 10], [10, 5], [20, 15]])


# Creating 3D lines.


line1 = part.line3D([0, 15, 0], [0, 15, 15])

line2 = part.line3D([20, 15, 0], [20, 15, 15])

line3 = part.line3D([0, 15, 15], [20, 15, 15])


# Join with a surface "line1", "sketch", "line2" and "line3".


fill1 = part.fill([line1, sketch, line2, line3])


# Creating sketch on 'XY' plane


sketch2 = body.add_sketch('xy')


# Creating spline 2D on "sketch2"


sketch2.spline2D([[0, 15], [5, 20], [10, 25], [20, 15]])


# Join with a surface "line1", "sketch2", "line2" and "line3".


fill2 = part.fill([line1, sketch2, line2, line3])


# Joining surface "fill1" and "fill2".


part.join([fill1, fill2])


一般

平面の作成

平面からのオフセット


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Creating 20 mm offset plane from 'XY' plane.


plane = part.plane('Offset from plane', 'xy', 20)


やるべきこと

3Dライン

ライン

ポイントツーポイント


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Creating 3D line.


part.line3D([0,0,0], [10,20,50])


やるべきこと

3D ポイント

コードからのポイント


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Creating 3D point.


part.point3D([0,0,0])


やるべきこと

3D スプライン

from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Creating 3D spline.


part.spline([[0,0,0], [5,5,7], [10,5,15]])


パラメータの作成


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Creating a real parameter called "Parameter1" with 50m initial value


param = part.create_param('real', "Parameter1", 50)


リレーションの作成

方式


from Rice.application import Application


# Initializing connection with CATIA


app = Application()


# Getting "parts" created. Once CATIA connection is enabled a part is created automatically.


parts = app.get_parts()

part = parts[0]


# Getting "bodies". PartBody body is automatically created.


body, = part.get_bodies()


# Creating 20 mm offset plane from 'XY' plane.


plane = part.plane('Offset from plane', 'xy', 20)


# Creating a real parameter called "Parameter1" with 0.03m initial value


param = part.create_param('real', "Parameter1", 0.03)


# Setting up a formula to set plane offset equal to two times the "Parameter1" value.


part.create_formula('formula1', plane.offset(), '{}*2'.format(param.name))


やるべきこと

保存


from Rice.application import Application

import os


# Initializing connection with Catia


app = Application()


# Get created parts


parts = app.get_parts()

part = parts[0]


# Get created bodies


body = part.get_bodies()[0]


# Add a sketch on XY plane


sketch = body.add_sketch('xy')


# Add a close path to sketch


sketch.close_path([[0,0],[50,0],[50,50],[0,50]])


# Generating "Pad" operation with "sketch" and 50 mm height


pad = body.pad(sketch, 50)


# Save part, name.CatPART


part.save(os.path.join(os.path.abspath(''),'name'))


データのエクスポート


from Rice.application import Application

import os


# Initializing connection with Catia


app = Application()


# Get created parts


parts = app.get_parts()

part = parts[0]


# Get created bodies


body = part.get_bodies()[0]


# Add a sketch on XY plane


sketch = body.add_sketch('xy')


# Add a close path to sketch


sketch.close_path([[0,0],[50,0],[50,50],[0,50]])


# Generating "Pad" operation with "sketch" and 50 mm height


pad = body.pad(sketch, 50)


# Save part as "stl" format, name.stl


part.export_data(os.path.join(os.path.abspath(''),'name'),"stl")


CATIAのプラグイン開発はVBAを使えだと?

2023-06-08 16:10:31 | CATIA
CATIA Plugin: VBA Development

俺からの質問。
AutoCADのプラグインはC#言語を使って開発できることが分かりました。ではCATIAのプラグインは何言語を使ってどうやって開発すれば良いのでしょうか?また、マニュアルや書籍があったら教えて下さい。

ChatGPT
CATIAのプラグインを開発するためには、CATIAの公式な開発環境であるCATIA V5 Automation APIを使用します。このAPIは、Visual Basic for Applications (VBA)を使用して開発することができます。VBAは、Microsoft Office製品(Excel、Word、Accessなど)で一般的に使用されているマクロ開発言語です。

CATIAのプラグイン開発に関する詳細な情報やチュートリアルを提供する公式のマニュアルや書籍はありますが、オンラインのリソースが主な情報源となる場合があります。以下にいくつかの参考資料を示します。

CATIA V5 Automation API公式ドキュメント: CATIAの公式ドキュメントには、APIのリファレンスや開発ガイドなどが含まれています。CATIAのバージョンに応じた正確なドキュメントを探してください。

CATIA公式フォーラム: Dassault Systèmes社が提供する公式フォーラムには、CATIAの開発に関する情報や質問に対する回答が掲載されています。フォーラムを検索して、開発者コミュニティのアドバイスやヒントを入手できます。

オンラインチュートリアルやブログ: CATIAのプラグイン開発に関するチュートリアルやブログ記事は、オンラインで利用可能です。GoogleやYouTubeなどの検索エンジンを使用して、CATIA V5のプラグイン開発に関するチュートリアルを見つけることができます。

以上がCATIAのプラグイン開発に役立つ情報源です。CATIAのバージョンや特定の開発目標に応じて、具体的な情報を見つけることが重要です。

VBA?本当か?
害人の書いた某糞本の通りにやってみたが、全く動かなかったのだが何か?

PDF化したヤツをまるっと訳すしかないのか?マジでめんどくせーんだがorz

P.S.
GitHubに池www
Python、VBA、C#なんでもござれの世界だ。

もはやChatGPTや本はお役御免になるだろう。


AutoCADのプラグインを作る無料マニュアルの和訳(46ページまで)

2023-06-07 19:23:37 | Autocad

プロローグ

少年の頃、私はすぐにコンピューターに魅了されました。 いわゆるコンピュータ時代はまだ始まっていませんでした。 企業はカードトレイとタイプライターを使用していました。 手紙は郵便で送られてきました。 電話での連絡、それもスマホではありませんでした。 私が初めてプログラミングを体験したのは、1985 年頃の MSX でした。今日知られているようなインターネットはまだ存在していませんでした。 MSX はテレビに接続する必要があり、コードを保存するためにカセット プレーヤーを使用するコンピューターでした。 MSXのプログラミングはBASICという言語で行われました。 これは、コンピュータに実行する簡単なコマンドを与える、かなり単純な言語でした。 私の最初の実際のアプリケーションはスロット マシンでした。 あらゆる種類のシンボルが 3 つのブロックで回転し、完全にランダムに停止します。 スリーカードを獲得するとポイントが得られます。 とてもうまくいきました。 ただし、3 つの等しいシンボルが出現する確率が小さすぎることを除いては (実際のスロット マシンでも同様ですが、それはさておき)。 幸いなことに、コード内の数式を調整できたので、3 つが等しい可能性が大幅に高まりました。 あっという間に何百万ものポイントが集まり、画面に収まりきらないほどになりました。 結局のところ、いつも勝つのだから、プレイの楽しみはすぐになくなってしまった。 遊ぶことが目的ではなく、何かを実行するコードを書くことが目的でした。 そこから何を学んだのでしょうか? コンピューターゲームは楽しいですか? いいえ、プログラミングの方がずっと好きでした。 アイデアをコードに変換して、コンピューターが何をしたいのかを理解できるようにします。 初めて PC を購入した後、すぐに他の言語に切り替えました。 BASICはPCには向いていませんでした。 より優れた言語は Pascal でした。 Pascalでたくさんのツールを作りました。 その後、他の言語や Web デザインなどのテクニックを試してみました。 コードは PHP と JavaScript で記述されました。 これらの言語はどちらも C++ と非常に似ています。 プログラミングはまだ趣味でした。 専門的にはコンピューターも扱わなければなりませんでした。 私は土地測量士になっており、事務所では AutoCAD を使って測量を地図に変換する作業を頻繁に行っていました。 私は趣味から AutoCAD を自分の希望に合わせるために AutoLISP と VBA を勉強しました。 便利なツールを使用すると、時間のかかるさまざまなアクションを突然、はるかに速く実行できるようになります。 私は常々、趣味を仕事には絶対にしたくないと言ってきました。 そうなると趣味がなくなってしまうからです。 2011年、本人の意思とは関係なくプロのプログラマーになりました。 現在は、主に土木工学市場を対象とした、AutoCAD、Civil 3D、または Map 3D 内で実行される商用アプリケーションを開発しています。 それ以来、趣味はなくなりました。 2015年になって、やっぱり痒くなり始めました。 私にとって、本を書き始めるのは長い間楽しいと思っていました。 数多くの小説やスパイ本が成功を収めた後、いよいよ本番の時が来た。 私は本を書くという新しい趣味を見つけました。 プログラミングに関する本はたくさんあります。 さて、AutoCADについて。 しかし、AutoCAD のプログラミングについては、ほとんど何も見つかりません。 自分でいろいろ調べて試してみなければなりませんでした。 こういった本があればよかったと思います。 幸いなことに、私は自分の知識をこの本にまとめて、他の人が AutoCAD のプログラミングを学習する際の助けを得ることができるようになりました。

この本の読み方

まだプログラミングの経験はそれほど必要ありませんが、プログラミングをしたいという意欲は持っています。 適度なコンピュータ知識を持ち、自立していることが期待されます。 「うまくいかない」と叫ぶ消極的なタイプの人は、この本を読まないほうがいいでしょう。 何かがうまくいかない場合はどうすればよいですか? 次に、原因を見つけて修正します。 それは精神だ! 本書はそのような人たちに向けて書かれています。 この本はかなり読みやすいです。 章の順序は、コードの一部を説明し、その後に (必要に応じて) そのコードのより詳細な説明が続き、さまざまな章の間に理論の章が含まれることもあります。 この本の進行は、AutoCAD で何かを動作させる実践に焦点を当てています。 .NET で何ができるかについては詳しく説明されていません。可能性が広すぎるためです。 コードの各部分では、.NET に慣れるために十分な関数と構造について説明します。 知識が増えれば増えるほど、まだ知らないことを自分で調べることが容易になります。 これはダミー向けの本ではないため、中間ブロック、情報ブロック、ヒントや興味深いポイントは見つかりません。 ただし、最後に用語のリストと簡単な説明があります。 これは参考になります。 また、すべてのソース コードは Web サイト Books.huiz.net/ からダウンロードできるため、すべてを再度入力する必要はありません (実際には、その方が有益です)。 この新しいエディションは、Visual Studio 2022 と AutoCAD 2023 を使用するように更新されました。また、英語が私の母国語ではないことにも留意してください。 私はオランダ語で書かれた本をできるだけ正確に翻訳しようと努めました。 ただし、言葉の間違いを見つけた場合は、読み返していただき、私の無知をご容赦いただければ幸いです。 この本が有益であり、あなたにとって 1 ユーロまたは 1 ドルの価値があると感じていただければ幸いです。 学習頑張ってください! アントン・ホイジンガ「これまでやったことがないので、できると思います。」 長くつ下のピッピ

1. プログラミングを始める方法

プログラミングを学習する最適な方法は何かについては意見が分かれています。 最善の方法はプログラミングに関する良い本を読むことだという人もいるでしょう。 そこで、プログラミングに関する一般的な本であるべきなのか、それともこれからプログラミングする言語に関する本であるべきなのかという疑問が生じます。私は、「プログラミングはあなたの中になければなりません」と言います。 そうでなければ辞めた方が良いかもしれません。 車の運転を本から学ぶことはできません。 ギアのシフトやウインカーの操作、オイルの点検方法など、車の運転の仕組みを学ぶことができます。 しかし、適切な運転能力がなければ、交通状況を洞察したり、無意識のうちに車を操作したり、他の道路利用者に予測したりする能力は得られません。 プログラミングでも同じように機能します。 コンピューターが勤務時間中にのみ電源を入れればよい単なるツールである場合、この特別なデバイスの詳細に興味がない場合、コンピューターの素晴らしい世界をさらに深く掘り下げることに興味がない場合 、それならこの本を読むのをやめて、別の趣味に集中したほうがいいでしょう。 それは決して何かになることはありません。 今後の人生も頑張ってください! この記事を読み続ければ、あなたにはプログラミングを学ぶ意欲があり、おそらくプログラミングが上手くなりたいという意欲があると思います。 じゃあ、頑張ってね! この章はいくつかの退屈なことから始まります。 うまくいけば、それを乗り越えることができます。

AutoCAD のプログラミング

この本は AutoCAD のプログラミングについて説明しています。 この本は、Windows アプリケーションやモバイル アプリケーションのプログラミングに関する詳細を網羅した本ではなく、AutoCAD 用のプラグインの作成に関する本です。 特定のプログラミング領域をさらに深く掘り下げたい場合は、それに関する本が無数にあります。 しかし、残念なことに、AutoCAD のプログラミングに関する書籍はほとんどありません。 だからこそ、他の人の助けになればと思い、時間をかけて自分で記事を書きました。

どの言語が適しているか

プログラミングに使用できる言語はいくつかありますが、実際に選択することはできません。 学ぶのに最適な言語は C# です。 これはシーシャープと発音されます。 そして、なぜこれが最良の選択なのでしょうか? AutoCAD の場合は、次の言語 (およびその他の言語) でプログラムすることができるためです。 AutoLISP VBA (Visual Basic for Applications) VB.NET C++ C# AutoLISP は非常に強力で、これを使用してほとんどあらゆるものを作成できます。 ただし、Lisp ルーチンは難読化されていないか、難読化されていないため、サードパーティによる編集が可能です。 さらに、Lisp の構文は他の一般的なプログラミング言語とはまったく異なるため、別の言語を学習したり、異なる言語間で切り替えたりすることははるかに困難です。 AutoCAD での小さなアクションに適しており、知っていれば確かに役立ちますが、とにかく脇に置いておきましょう。 VBA は非常に強力でもあり、VBA を使用すると Windows 関数も実行できるため、Lisp よりもはるかに多くのことができます。 VBA には古い言語であるという欠点があり、何年も前から消滅したと宣言されてきましたが、今も復活し続けています。 さらに、これは Visual Basic 言語であるため、本物の (またはむしろ成功した) プログラマーによって真剣に受け止められていません。 VB.NET は最新のプログラミング言語であり、C# で可能なことはすべて実行できます。 どちらも .NET のバリアントであり、これらを使用して非常に強力なアプリケーションを作成できます。 構文を除けば 2 つの言語に違いはありませんが、繰り返しになりますが、この言語は成功した (つまり、必ずしも優れているわけではない) プログラマーによって真剣に受け止められていません。 VB.NET を学びたいかどうかはあなた次第です。おそらく、VBA で何かをやったことがあり、VB.NET の方が簡単に思えるからかもしれませんが、私はまだそれをお勧めしません。 VB.NET の構文は VBA とはかなり異なるため、すぐに C# を使用することをお勧めします。 私は、VB.NET ですべてを行う成功したプログラマーを 1 人だけ知っています。 それは Autodesk の Stephen Preston です。 古い C 言語の出身である彼は、.NET が登場したときに選択を迫られました。VB.NET か C# でしょうか? 彼の友人たちは VB.NET プログラマーよりも優れていると感じていたため、スティーブンは強い頑固さから自分の意見を主張するために VB.NET を選択しました。 しかし、インタビューの中で、彼は自分の選択について少し後悔しているようです:

http://adndevblog.typepad.com/autocad/2012/05/vbnet-or-c-a-personal-perspective.html

C++ はかなり複雑な言語です。 学ぶことはできますが、始めるのにはほとんど適していません。 また、C# よりも少し強力です。 これは非常に複雑で、すぐに実際の障害を引き起こす可能性があるため、最初から始めるのには適した言語ではありません。 次に、C# は真剣に受け止められている言語であり、Java、PHP、JavaScript、C++ などの他の言語と構文が非常に似ている言語であるため、上にある別の言語の学習や理解が容易になります。 それの。 C# を読める場合は、インターネット上で JavaScript または C++ のサンプルを入手し、それを独自のコードに実装することもできます。 さらに、C# または C に似た言語には、VB.NET よりもはるかに多くのサンプル コードがあります。 C# には、非常に強力なアプリケーションを迅速かつ簡単に構築するために必要なものがすべて揃っています。 Windows アプリケーションであっても AutoCAD プラグインであっても、この言語は優れています。 したがって、プログラミングには C# が (最良の) 選択肢となります。VB.NET でもまったく同じことができるにもかかわらず、C# プログラマーはほぼすべての人からより真剣に受け止められ、また、良い仕事をより早く見つけることができます。 C# プログラマが VB.NET プログラマよりも先を行く正当な理由はありませんが、それでもそれは起こります。 出世してキャリアを築きたいですか? 次に、C# を選択します。

プログラミングはどうやって学ぶのですか?

それは難しい質問であり、人によって答えが異なる可能性があります。 どうすればプログラミングを学ばなくなるかという質問に答えるのははるかに簡単です。 それでも、誰もがプログラミングを学ぶために必要だと私が考えるいくつかのポイントについて言及します。 プログラミングに興味を持ちましょう。 やり始めてください。 いくつか試してみてください。 インターネットで調べてください。 行動することで学びが得られます。 他の人から学びましょう。 ソースコードを読んで、それが何を意味するかを理解してください。 ローレンド・アルメイダはかつてこう言いました、「一つの情報源から盗むことは盗作だ。多くの情報源から盗むことは研究だ。」 時間と機会があれば、証明書や学位を取得できるコースを受講してください。 これが必要な特定の仕事では常に役に立ちます。 協力的になりましょう。 グループの中で自分が最も優れている場合もあれば、最も劣っている場合もあります。 彼らから学びましょう。 プログラムを再構築します。 自分で解決策を見つける方法を見つけてください。 他のコンピューター言語を学びましょう。 自分でコーディング標準を計画します。 あなたを制限するのではなく、より構造化された方法で作業できるようにするためです。 言語は24時間では習得できません。 むしろ、年単位で数えてください。

.NET とは

では、.NET (ドット ネットと発音される) とは正確には何でしょうか? 聞いたことがあるかもしれませんが、そうでない場合は、簡単に説明させていただきます。 もっと詳しく知りたければ、それに関する良い本が見つかると思います。 昔は、アプリケーションを作成したい場合は、すべてを自分で解決する必要がありました。 たとえば、画面を制御する方法、キーボードを読み取る方法、マウスの動きを傍受する方法などです。 多くの場合、それを行う既製のコードやモジュールを購入できますが、デバイスごとに構成が異なるため、すべてのコンピュータで動作するアプリケーションを作成するのは常に複雑な作業でした。 メーカーはデバイスに対処する独自の方法を持っていましたが、それらは相互に互換性がありませんでした。 プログラマーとして、発生する可能性のあるすべての構成をテストすることはできず、アプリケーションがブランド X のマウスやブランド Y のモニターでは正しく動作しない可能性があります。 その後、Java が市場に登場しました。 これは、利用可能な Java 関数を使用してアプリケーションを実行できるフレームワークでした。 これにより、実際の作業を担当する関数を直接呼び出すことができるようになり、プログラミング時間が大幅に節約されました。 Microsoft は Windows に Java を実装することを許可されていなかったため、Java のアイデアに基づいて、より優れた独自のフレームワークを作成しました。 このフレームワークは .NET と呼ばれていました。 このフレームワークは、互換性のあるいくつかの言語の基礎として機能しました。 これは、.NET 言語で記述されたアプリケーションは相互に通信でき、コード内で使用できる関数ライブラリが膨大な数にあるためです。 それが .NET が成功した理由です。 C++.NET、VB.NET、F#、C# のどれを使用するかは問題ではなく、すべて互換性があります。 また、利用できる機能が豊富であることもプログラマーにとってはありがたいことです。 1 行のコードで、適切なボタンとアイコンを備えた通知ウィンドウを表示できます。 数行のコードを使用すると、パスが存在するかどうか、ファイルが上書きされるかどうかなどを個別にチェックできる保存ダイアログを呼び出すことができます。 .NET 自体は言語ではなく、さまざまな .NET 言語で使用できる機能が満載されたライブラリのコレクションです。 オートデスクは、AutoCAD の機能を利用できる .NET アプリケーションを AutoCAD にロードできるようにしました。 したがって、AutoCAD の .NET アプリケーションは、AutoCAD 関数だけでなく Windows 関数も呼び出すことができます。 オートデスクは、いわば AutoCAD の機能を満載したライブラリで .NET を拡張しました。 そのため、アプリケーションを .NET で公開する企業が増えています。 このように公開されたライブラリをAPI(アプリケーション・プログラミング・インターフェース)と呼びます。

エディタ

実際に何かを作成し始める前に言及すべきもう 1 つの重要な点は、エディタです。 これは、コードを記述する単なるエディターそのものではないため、IDE (統合開発環境) とも呼ばれます。 もちろん、メモ帳で C# を書くこともできますが、それは馬を荷車に乗せて自分で荷車を引くのと同じくらい面倒で時間がかかります。 迅速かつ簡単にプログラミングできるようにするには、選択した言語に焦点を当てたエディターを備えた IDE が必要です。 たとえばC#。 そして、このために非常に優れた IDE があります。 本書では Microsoft の Visual Studio のみを使用します。 これには無料版があり、一定の条件を満たしていればプログラミングが可能です。 営利企業に勤めていて、アプリケーションからも収入を得ている場合は、Visual Studio を購入するか、別の IDE を探す必要があります。 オープンソースの IDE もあります。 現在、Visual Studio 2022 が Microsoft の最新の IDE です。 以下のリンクから「Visual Studio 2022 Community」という無料バージョンをダウンロードできます:

https://visualstudio.microsoft.com/downloads/

Community Edition を選択します。 Visual Studio をインストールできない場合は、プログラミングを諦めることを検討するかもしれません。 成功したと仮定して、次の章でお会いしましょう。 ただし、もう 1 つヒントを教えておきます。 インストール中に、インストールするコンポーネントを指定できます。 単純な C# アプリケーションを開発することになるため、[デスクトップとモバイル] カテゴリで .NET デスクトップ開発オプションを選択するだけです。このセクションのみにチェックを入れ、提案されている右側のすべてのサブセクションを受け入れるだけで十分です。 今のところはそれで十分です。 追加のコンポーネントは後でいつでもインストールできますが、AutoCAD プラグインには必要ありません。

2. AutoCAD でのアプリケーション

この章では、AutoCAD にロードする小さなアプリケーションを作成し、AutoCAD のプログラミングの基本を説明します。 Visual Studio がインストールされており、もちろん AutoCAD もインストールされています。

プロジェクトの作成

AutoCAD のプラグインはクラス ライブラリ タイプです。 Visual Studio の起動画面で、[新しいプロジェクトの作成] を選択できます。次のステップで、[クラス ライブラリ (.NET Framework)] を選択します。 .NET Standard と .NET Core のバリアントもあるので、間違えないように注意してください。 それらを選択してはいけません! また、「カスタム コントロール ライブラリ」バリアント、「Windows フォーム」バリアント、「WPF」バリアントではなく、「クラス ライブラリ (.NET Framework)」のみが正しい選択です。

上部で

C#、Windows、ライブラリでフィルタリングしてリストを絞り込むことができます。

次のステップに進みます。 名前を入力し、プロジェクトを保存する場所を選択できます。 ここまでは特別なことは何もありませんが、先に進む前にいくつかの新しいことを学ぶ必要がある点が異なります。 作成するアプリケーションごとにプロジェクトが必要です。 プロジェクトには、すべてのプログラム コード、ダイアログで使用する画像などのリソース、さまざまな関数ライブラリへの参照、およびこのアプリケーションに適用される設定が含まれています。 すべてが一緒になってプロジェクトです。 1 つのプロジェクトが 1 つのアプリケーションにつながります。 したがって、プロジェクトはアプリケーションです。 ソリューション内に複数のプロジェクトを含めることができます。 したがって、ソリューションは、属するプロジェクトの集合です。 プロジェクトが相互に参照する場合、複数のプロジェクトを含むソリューションが確かに役立ちます。 この段階では、各プロジェクトが独自のソリューション内にあるというルールを使用します。 そしておそらく将来的には、他のことをすることは決してないだろう。 上記の場合、ソリューション名をプロジェクト名と同じにしても安全です。 ソリューションとプロジェクトを別々にし、同じディレクトリに置かないことをお勧めします。 次に、正しい .NET Framework バージョンを選択します。 これは必要に応じて後で変更できます。 必要なバージョンを知っておくと便利です。 AutoCAD のバージョンごとにこれは異なる場合があります。 リリース .NET Framework AutoCAD 2023 4.8 AutoCAD 2022 4.8 AutoCAD 2021 4.8 AutoCAD 2020 4.7 AutoCAD 2019 4.7 AutoCAD 2018 4.6 AutoCAD 2023 用のアプリケーションを作成する場合、プロジェクトは を参照する必要があります。 NET Framework 4.8 が使用されますが、AutoCAD 2018 用のものを作成する場合は、.NET Framework 4.6 を選択してください。 [作成] ボタンをクリックすると、エディターが表示され、クラス ライブラリ タイプの新しく作成されたプロジェクトが表示されます。 スクリーンショットのレイアウトはところどころ異なる場合がありますが、大部分は一致しているはずです。 コンポーネントが見つからない場合は、通常、[表示] メニューから検索して表示できます。 左側/中央の大きなフィールドは、コード ファイルを変更するエディタです。 右側にはソリューション エクスプローラーがあり、プロジェクトに属するすべてのファイルがあります。 その下には、選択したオブジェクトまたはファイルのプロパティを変更できる [プロパティ] ウィンドウがあります。 この本では、IDE の表示にライト テーマを使用しています。これはスクリーンショットに適しています。 テーマを暗いままにすることもできます。これは IDE のパフォーマンスには影響しません。

大きなコード

エディターには、開いているファイルが表示されます。 上部のタブには開いているファイルが表示され、ファイルを簡単に切り替えたり、閉じたり、並べたりすることができます。 コードは色を使用して表示されるため、コードのさまざまな部分が何を表しているのかがすぐにわかります。 コードにはいくつかの重要な機能もあります。すべて大文字と小文字が区別されます。中かっこを除くすべての行はセミコロンで終わります。コード行は中かっこでグループ化できます。これらは 1 つに属するコード ブロックです。

リファレンス ライブラリ

今のところは心配する必要はありません。結果が必要です。 まず、AutoCAD ライブラリを使用することをプロジェクトに伝える必要があります。 これを行うには、ソリューション エクスプローラーで [参照] を右クリックし、[参照の追加] オプションを選択します。 次のウィンドウで、必要な AutoCAD ライブラリを探します。 最近使用した参照がまだないため、[参照] ボタンを使用して検索する必要があります。 AutoCAD がインストールされている場所に移動し、ファイル「C:\Program Files\AutoCAD 2023\AcCoreMgd.dll」を添付します。 これには、アプリケーションから呼び出すことができる AutoCAD 関数が含まれています。 別のバージョンの AutoCAD を使用している場合は、対応するフォルダでファイルを見つけることができます。 このウィンドウの [アセンブリ] タブの [フレームワーク] セクションで次の項目も探します。

ライブラリ

「System.Windows.Forms」を選択します。 「OK」をクリックします。 エディターには新しいものは何も表示されませんが、ソリューション エクスプローラーで「参照」を開くと、選択したこれらのライブラリを見つけることができます。 デフォルトですでにリンクされているライブラリがいくつかありますが、ここでは何もする必要はありません。 必要なものもあれば、気にしないものもあります。 「AcCoreMgd」と「System.Windows.Forms」がその中にあれば、今のところは問題ありません。

Writing code 
Expand the code in the editor. By default, this was written:

using System; 
using System.Collections.Generic;
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace ClassLibrary1 

    public class Class1 
    { 
    } 

Remove this and replace by this: 

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 
namespace ClassLibrary1 

    public class Class1 
    { 
        [Autodesk.AutoCAD.Runtime.CommandMethod("MyCommand")] 
        public void MyFirstCommand() { 

            System.Windows.Forms.MessageBox.Show("Hooray! AutoCAD is doing what I want!"); 
        } // void
    } // class 
} // namespace 

今のところ、それが何を言っているのか、それが何を意味するのかは心配しないでください。 いずれの場合も、エディターにエラーが含まれていないことが重要です。 これは、何かが間違っている場合、赤い波線で示されます。

ブラケットの位置も問題ありません。 デフォルトでは、これらは新しい行に配置されますが、左中括弧が同じ行に配置されるように設定することもできます。 エディターが上記のコードを別の方法で再配置しても、それは問題ではありません。 緑色の文字はコメント行です。 アプリケーションはこれらを無視します。コードの意味を理解することは、自分自身や他のプログラマーにとって役立ちます。 中括弧が多すぎるとどのブロックで終わるのか混乱する可能性があるため、短いコメント テキストを使用して、閉じ中括弧が void またはクラスまたは名前空間に属していることを示すことができます。 これは個人的な選択です。 上のスクリーンショットでは、コードが正しくコピーされず、エラーが検出されています。 必要に応じて、前に指定したコードをコピーします。ただし、コードにエラーがないかどうかを確認してください。エラーが発生すると機能しなくなります。 では、これを AutoCAD でどのように機能させるのでしょうか?

デバッグ

コードが正しく動作するかどうかをテストできます。 これをデバッグと呼びます。 これを実行するには、エディタで F5 をクリックするか、ツールバーの緑色のスタート ボタンを押すか、[デバッグ] > [デバッグの開始] メニューを使用します。 次のエラー メッセージが表示されます。 これは、プロジェクトの出力をすぐに開始できないことを意味します。 それは正しい。 Windows アプリケーション タイプのプロジェクトは EXE ファイルを生成し、Windows で直接開始できますが、クラス ライブラリ プロジェクトは DLL ファイルになります。 それを直接開始することはできません。 デバッグ時に何を開始するかをプロジェクトのプロパティで指定することで、この問題を修正できます。 ソリューション エクスプローラーの [プロパティ] でマウスを右クリックし、 [開く] オプションを選択します。 エディターに、プロジェクトのプロパティを含むページが表示されます。 「デバッグ」タブを選択します。

ここではデバッグ時にプロジェクトを開始するように書かれていますが、DLLファイルが実行できないため実行できません。 したがって、「外部プログラムの開始」オプションを選択します。 適切な場所でファイル「acad.exe」を見つけます。 もう一度「F5」をクリックします。 すべてがうまくいけば、AutoCAD が起動します。 しかし、新しく作成したアプリケーションは機能するのでしょうか? これを正しく理解するには、自分が今何をしたかを知ることが重要です。 これは段階的な計画で表すことができます。Visual Studio でプロジェクトを作成しました。 このプロジェクトは、デバッグを開始すると自動的に DLL ファイルに変換されます。 DLL ファイルは実行できないため、デバッグ時に外部アプリケーション、つまり AutoCAD を起動するように指定しました。 ただし、もちろん AutoCAD は DLL をまだ認識していないため、最初に DLL を AutoCAD にロードする必要があります。 AutoCAD が起動したら、コマンド ラインに「NETLOAD」コマンドを入力します。 ダイアログボックスが表示されます。 Visual Studio が作成した DLL ファイルを見つけます。 これは、プロジェクトの下のフォルダー「\bin\Debug\」にあります。 保存場所がわからない場合は、Visual Studio のソリューション エクスプローラーでプロジェクトを選択し、[プロパティ] ウィンドウでプロジェクトの場所を確認できます。 このテキストをコピーして AutoCAD のダイアログ ボックスに貼り付け、そこから「\bin\Debug\」に進むことができます。 私のコンピュータ上の場所とは異なる可能性があります。 それはプロジェクトを保存する場所によって異なります。 あなたの場所には、多数の DLL ファイルがあります。 ファイル「ClassLibrary1.dll」を選択し、「OK」をクリックします。 AutoCAD によってファイルがロードされるので、このセッション中にこの DLL で作成した関数にアクセスできるようになります。 AutoCAD を再起動しても、DLL は自動的に再ロードされません。 現時点では、デバッグ セッションごとにこの DLL を AutoCAD に手動でロードする必要があります。 AutoCAD にはロードされたものを一切信頼しないという冷酷な習慣があるため、おそらく次のウィンドウが表示されるでしょう。

「一度ロード」または「常にロード」オプションを選択します。 これを回避する他の方法については、この本の後半で説明します。 コードを少しでも理解していれば、AutoCAD で使用するための新しいコマンドを思いついたことがわかります。 このコマンドは「MyCommand」と呼ばれ、テキストを含むダイアログ ボックスが表示されます。 うまくいくか見てみましょう。 コマンド ラインに「MyCommand」コマンドを入力し、メッセージが表示されるかどうかを確認します。 すべてがうまくいけば、次のように表示されます。おめでとうございます。 次の章に進むことができます。 うまくいかなかった場合は、本当にプログラミングを学びたいのか、やる気があるのかを自問してください。 どうやら、あなたはこの本の指示にうまく従えないか、数行のコードをコピーして貼り付けるのが苦手のようです。 または、よく読むのはあなたの趣味ではありません。 必要に応じて、上記の説明に従って再試行してください。 それがうまくいかない場合は、あきらめてください。

3. 注: AutoCAD でのアプリケーション 前の章では、プロジェクトを作成しました。 このプロジェクトには、AutoCAD への参照とコードの一部が含まれています。 デバッグにより、これらすべてが AutoCAD にロードできる DLL ファイルに変換されました。 しかし、正確には何が起こったのでしょうか?

参照

AutoCAD 関数を使用するには、その関数が使用可能になっている必要な AutoCAD ライブラリへの参照が必要です。 Visual Studio のソリューション エクスプローラーで [参照] 見出しの下を見ると、「accoremgd」への参照が表示されます。 これは AutoCAD コア マネージドの略で、これには AutoCAD のコア機能が含まれており、マネージドはマネージド コードへの参照であることを示します。 なぜこれがコアと呼ばれるのでしょうか? オートデスクは、.NET で数千の機能を利用できるようにしました。 これらの関数はすべて、わかりやすくするためにグループに分けることができます (オブジェクトの関数は、コマンド ライン、パレット、リボンの関数、または算術関数とは別のグループにあります)。 これらすべての関数グループを 1 つの DLL に入れることはできますが、非常に大きなファイルになります。 そのため、オートデスクは関数をグループに分割するだけでなく、異なる DLL ファイルにも分割しました。 コア関数は別の DLL にあり、現在プロジェクトにリンクされています。 マネージコードとは何ですか? .NET アプリケーションはマネージド コードで構成されており、コンピューターが常に制御します。 .NET 言語では、単にコンピュータをクラッシュさせることはできません (AutoCAD はクラッシュする可能性がありますが、これはそれほど難しいことではありません)。 .NET アプリケーションでエラーが発生すると、Windows はそれをインターセプトし、エラー メッセージを表示し、破損しているものや機能しなくなったものをシャットダウンします。 アンマネージ コードはその逆で、Windows が制御しないコードです。 その際にエラーが発生すると、Windows がクラッシュしたり破損したりする可能性があります。

コードテキスト

コード自体はテキスト形式で記述されます。 これはプロジェクト内に CS ファイルとして保存されます。 CS は C# の略語です (これがどのように発音されるかについては、「プログラミングの開始」の章を参照してください)。 Windows エクスプローラーでこのファイルを検索し、テキスト エディターで開くことができます。 このファイルの先頭には、便利な関数を含む名前空間への参照 (using) があります。 これは必須ではありませんが、あると便利です。 この例では、それは必要さえありません。 using で始まる行をすべて削除しても、コードは引き続き機能します。 赤い下線は表示されず、再度デバッグしても問題は発生しません。 それで、使用とは何ですか? using はコードをより速く書くのに役立ちます。 基本的にはショートカットです。 次の行を見てください。 System.Windows.Forms.MessageBox.Show("やったー! AutoCAD は私が望むことを実行しています!"); 青い文字の MessageBox はオブジェクトです。 このオブジェクトには Show 機能があります。 実行すると、指定されたテキストを含む通知ウィンドウが表示されます。 このようなウィンドウをコード内の数十箇所に表示したい場合は、通知ウィンドウを表示するたびに System.Windows.Forms.MessageBox オブジェクトを参照する必要があります。 を使って短く書くこともできます。 MessageBox オブジェクトは、System.Windows.Forms という名前の名前空間にあります。 名前空間については、この本の後半で詳しく説明します。 ただし、using を使用してこの名前空間をコードの先頭に置くと、未知のオブジェクトに遭遇するとすぐにコード自体が正しい名前空間を探すようになります。 この行を次のように変更します。 MessageBox.Show("やったー! AutoCAD は私が望むことを実行しています!"); 次に Visual Studio で表示されるのは、テキスト MessageBox が青ではなくなり、赤い下線が付けられたことです。 マウスを上に置いたままにすると、現在のコンテキストでは MessageBox が使用できないことを示すメッセージが表示されます。 次に、最初の行の先頭に次の行を追加します。 メッセージボックスのテキストが再び青くなり、赤い線が消えることがすぐにわかります。 青い文字の CommandMethod も同様です。 これもオブジェクトですが、Show などのメソッドはありません。 これは、Autodesk.AutoCAD.Runtime という名前空間に存在します。 [Autodesk.AutoCAD.Runtime.CommandMethod("MyCommand")] という行を次のように置き換えます: [CommandMethod("MyCommand")] 赤い下線が再び表示されます。 今度は、赤下線の部分をマウスの左ボタンで 1 回クリックします。 このテキストの下の左側、または行番号の付いたバーにボタンが表示されます。 それをクリックすると、ドロップダウン メニューが表示されます。 したがって、 using を配置するか(最初のオプション)、現在の CommandMethod テキストを Autodesk.AutoCAD.Runtime.CommandMethod に置き換えるか(2 番目のオプション)を選択できます。 これはまさにあなたが望んでいないことです。なぜなら、あなたがすでに持っていたもので終わることになるからです。

最初のオプションを選択します。 Visual Studio は、新しい using を一番上に配置し、CommandMethod というテキストが再び青色になります。 完全なコードは次のようになります。

using System.Windows.Forms; 
using Autodesk.AutoCAD.Runtime; 

namespace ClassLibrary1 

    public class Class1 
    { 
        [CommandMethod("MyCommand")] 
        public void MyFirstCommand() 
        { 
            MessageBox.Show("Hooray! AutoCAD is doing what I want!"); 
        } // void 
    } // class 
} // namespace 

アプリの動作に関しては、usingを使用しても問題ありません。 むしろ、より効率的にコードを書く機会となります。

デバッグ

コードが機能するかどうかをテストすることをデバッグと呼びます。 デバッグはデバッグ プロセスの開始であり、その目的はエラー (バグ) を見つけることです。 これには、プログラミング エラーの検出だけでなく、アプリケーションの動作が期待どおりであるかどうかも含まれます。 Visual Studio に赤い下線が表示されなければ、アプリケーションは正しく動作していると思われるかもしれませんが、実際に実行してみないとわかりません。 public void MyFirstCommand() { という行を private void MyFirstCommand() { に変更しても、Visual Studio はこれで問題ありません。 これは、両方の行がコード的に正しいためです。 アプリケーションを AutoCAD にロードすると、AutoCAD はコマンドを認識せず、「不明なコマンド "MYCOMMAND"」というメッセージが表示されます。 F1 を押してヘルプを表示します。 パブリックとプライベートの違いについては、後ほど詳しく説明します。 機能するまでコードを復元すると、プライベートが再びパブリックになります。

4. 理論: Visual Studio

この章では、Visual Studio に関するいくつかの理論について説明します。 ただそれを読んで、そこに何が書かれているかを理解するように努めてください。 背景知識を知っておくと常に役に立ちます。

Visual Studio IDE

Visual Studio は、さまざまな言語のコードをアプリケーションに変換するのに役立つアプリケーションです。 この変換はコンパイルと呼ばれます。 これにより、書かれたコードがコンピュータが理解して実行できるファイルに変換されます。 Windows アプリケーション (EXE ファイル)、関数ライブラリ (DLL ファイル)、コンソール アプリケーションなど、さまざまな種類のアプリケーションを作成できます。 後者は、Windows のダイアログ ボックスを使用しないアプリケーションであり、基本的には、まだそれが何であるかを知っている人にとっては昔ながらの DOS プログラムです。 最近では、Visual Studio を使用して携帯電話用の Windows アプリやブラウザー用の Web アプリを作成することもできます。 AutoCAD にロードできるのは関数ライブラリだけであるため、本書では関数ライブラリの作成についてのみ説明します。 IDE はコードを記述する部分です。 IDE は、さまざまな部分に色を使用したり、エラーを早期に検出して表示したりすることで、作成を支援します。 また、IDE には、適切な関数と適切なパラメーターを見つけるのに役立つ IntelliSense と呼ばれる優れた機能が含まれています。


AutoCADのプラグインを作る無料マニュアル

2023-06-05 23:46:30 | Autocad



Start Programming in .NET for AutoCAD (English Edition) https://amzn.asia/d/6Lu3I7g
アマゾンのkindleunlimitedに加入すれば、無料で読める。

以前紹介したPDF化の方法を使えば、20冊以上ライブラリーに追加してしまい、何れかを返却しなければならない事態に陥ってもパソコンのストレージにジャンジャン貯めていくこともできるし、プリントアウトして紙の本として読むことができる。

ちなみに書店では入手できないような良書もkindleunlimitedで無料で読めたりする。
例えば「模写しながら10日で学べるRevitファミリ」なんかは神本の領域に入るKindleunlimited限定の本である。

イングリッシュホルン

2023-06-05 18:35:15 | 音楽・楽器


またの名をコールアングレ。
有名な曲はドヴォルザークのシンフォニーの家路。
ニューシネマパラダイスなど。

無名のメーカーでプラスチック製。
リードが合わないのか、作りがいい加減なのか知らんが、抵抗がキツすぎて使い物にならない。

以前、ラリリーのオーボエを所有していた時、フォックスのレナードのリードが吹きやすくて気に入っていたので、イングリッシュホルン用のリードは無いのか探してみたら無かったorz

真ん中に筋が通っていて外側に行くに従って薄くなり、強く咥えてもペシャッとならず、しっかり鳴ってくれた。

他社のリードは分厚くて鳴らしにくいか、薄過ぎてペシャッとなって音が出なくなるかのどちらかで話しにならない。

バッハのBWV1053がやりたいのに、これじゃ困る。
本当はオーボエダモーレが欲しいのだが、禿臆にはほとんど出ないし、新品で買うしかなく、しかも値段は100万以上。

ちなみにイングリッシュホルンはアマゾンで何と!11万で売られていた。
このイングリッシュホルンは禿臆で20万で買った。