<?xml version='1.0'?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:georss="http://www.georss.org/georss"  xmlns:media="http://search.yahoo.com/mrss/">
<channel>
	<title><![CDATA[SWJUG-RING: 6月 2017]]></title>
	<link>http://swjug.org/blog/archive/nishida/1496242800/1498834800</link>
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">http://swjug.org/blog/view/113665/5-selection-manager%E3%81%AE%E8%A9%B1%EF%BC%8C%E5%B9%B3%E8%A1%8C%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B%EF%BD%9Csolidworks-api%E3%81%AE%E5%8B%89%E5%BC%B7%E3%83%A1%E3%83%A2</guid>
	<pubDate>Tue, 20 Jun 2017 00:13:32 +0900</pubDate>
	<link>http://swjug.org/blog/view/113665/5-selection-manager%E3%81%AE%E8%A9%B1%EF%BC%8C%E5%B9%B3%E8%A1%8C%E3%83%81%E3%82%A7%E3%83%83%E3%82%AF%E3%83%9E%E3%82%AF%E3%83%AD%E3%81%AE%E4%BE%8B%EF%BD%9Csolidworks-api%E3%81%AE%E5%8B%89%E5%BC%B7%E3%83%A1%E3%83%A2</link>
	<title><![CDATA[5. Selection Managerの話，平行チェックマクロの例｜SOLIDWORKS APIの勉強メモ]]></title>
	<description><![CDATA[<p><a href="http://swjug.org/blog/view/113531/">前回</a>，<span style="background-color: #ffcc99;">「selectByID2の使用は極力無し」</span>という方針にたどり着いたので，<br />selectByID2は使わず済ませるにはどうすればよいか考えました。</p><p>一番簡単なのは，マクロで選択するのではなく，人に選択してもらうことです。</p><p>例として　平面が平行かどうかチェックするマクロを<a href="http://swjug.org/file/view/113666/">ここにアップロード</a>しました。</p><p><img src="http://swjug.org/mod/tinymce_pro/parallelCheck1.png" alt="image" style="border: 0px;"></p><p>&nbsp;</p><p>このマクロは，平面をあらかじめ選択した状態で実行してもらいます。</p><p>最初から選択されてる平面同士を比較して，平行かどうかを判断します。</p><p>最初から選択されてるので，改めてプログラムから選択する必要はありません。<br />こういうふうにできるときは　これがベストだと思います。</p><p>＜処理の内容の詳細＞</p><p>人が選択しても，マクロから選択しても，<br />選択されたものは「セレクションマネージャ」という枠に収まります。<br />シフトを押しながら選択していくと，なんでも何個でも入ります。</p><p>つまりセレクションマネージャに入っているものは，平面とは限りません。</p><p>今回はまずセレクションマネージャの中身をひとつずつ，平面かどうかチェックして，<br />平面じゃなければ選択解除してしまいます。</p><p>平面だけを残して，2つ以上残っていたら，平行のチェックを実施します。</p><p>ここで一つ問題が。</p><p>平行のチェックには，平面（IRefPlane型）のもってるプロパティを使うんですが，<br />セレクションマネージャにはなんでもかんでも入るので，<br />セレクションマネージャの中身は（それが平面かどうかチェックしたあとでも）<br />IRefPlane型には代入できませんでした。</p><p>いったんIFeature型で受けてから，GetSpecificFeature2メソッドでダウンキャストする必要がありました。</p>]]></description>
	<dc:creator>西田将也</dc:creator>
</item>
<item>
	<guid isPermaLink="true">http://swjug.org/blog/view/113531/4-selectbyid2%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%EF%BD%9Csolidworks-api%E3%81%AE%E5%8B%89%E5%BC%B7%E3%83%A1%E3%83%A2</guid>
	<pubDate>Mon, 19 Jun 2017 07:19:01 +0900</pubDate>
	<link>http://swjug.org/blog/view/113531/4-selectbyid2%E3%83%A1%E3%82%BD%E3%83%83%E3%83%89%EF%BD%9Csolidworks-api%E3%81%AE%E5%8B%89%E5%BC%B7%E3%83%A1%E3%83%A2</link>
	<title><![CDATA[4. SelectByID2メソッド｜SOLIDWORKS APIの勉強メモ]]></title>
	<description><![CDATA[<p><a href="http://swjug.org/blog/view/29615">約3年前</a>にやりかけて断念していたマクロの勉強を再開しました。<br />まだまだ理解が中途半端ですが，まとまらないままに勉強メモ書くのでツッコミお願いします。</p><p>内容に入る前に</p><p>前回まではVisual Studio使ってコード書こうとしてたんですが，<br />「日常のちょっとした繰り返し作業を自動化する」という（一番コスト効率のいい）目的には，<br />VBA(.swp)が最適だと感じたので，こっからしばらくVBAだけでやります。</p><p>今回は SelectByID2 メソッドについてのメモ。</p><p>「選択」という作業を自動記録するとあらわれる，<br />SldWorks.Modeldoc2.Extension.selectByID2 メソッド。<br />これを手動で書くと　案外うまくいかない。<br />思ったところが選択できない。</p><p>そこで，SelectByID2メソッドの実験のためのマクロを書きました。<br />（<a href="http://swjug.org/file/view/113532">ここからダウンロード</a>できます）</p><p><img src="http://swjug.org/mod/tinymce_pro/trySelectByID2_R.jpg" alt="image" style="border: 0px;"></p><p>わかったこと</p><ol><li>NameはType関係なくユニークなはずなのに，Typeも入れないと選択できない。</li>
<li>非表示のものは座標（XYZ)指定で選択できない。</li>
<li>座標はドキュメントの単位系がmmgsでも，メートルで指定しないといけない。</li>
</ol><p>最終的に理解したのは，<br />このメソッドは「画面を見ながらマウスクリックして選択する」作業そのものなので，<br />画面見ながらじゃない，どのように表示されてるかわかっていない　<br />マクロプログラムからの使用は，使いにくくて当たり前だな。</p><p>ということでした。<br />selectByID2の使用は極力無しでやっていこうと思います。</p><p>&nbsp;</p>]]></description>
	<dc:creator>西田将也</dc:creator>
</item>

</channel>
</rss>