<?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: 5. Selection Managerの話，平行チェックマクロの例｜SOLIDWORKS APIの勉強メモ]]></title>
	<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>
	<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>

</channel>
</rss>