<?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: 部品を90度回転して配置する]]></title>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B</link>
	<description><![CDATA[]]></description>
	
	<item>
	<guid isPermaLink="true">http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B</guid>
	<pubDate>Tue, 14 May 2019 15:52:49 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B</link>
	<title><![CDATA[部品を90度回転して配置する]]></title>
	<description><![CDATA[<p>基板に抵抗などの部品を配置するマクロを作成しました。</p><p>あらかじめ配置位置データを作っておき、その位置データを元に部品データを読み込んで配置するというものです</p><p>読み込んだファイルをそのまま配置する分には問題がないのですが、部品を90度回転させて配置させなければならない個所もありどうにか部品を回転させて配置したいと思うのですが、マクロの記録を使っても部品を回転させた記録は残らず困っており、お教え頂ければ助かります。</p><p>因みに現在私が使っているマクロは以下の通りです。済みませんがよろしくお願いします</p><p>' ******************************************************************************<br />'予めX値、Y値、Z値をスペースで区切ったテキストデータファイルを準備しておく<br />'*****************************************************************************<br />Dim swapp As Object</p><p>Dim Part As Object<br />Dim boolstatus As Boolean<br />Dim longstatus As Long, longwarnings As Long</p><p>Sub main()</p><p>Dim swapp As SldWorks.SldWorks<br />Dim Filter As String<br />Dim fileName As String<br />Dim fileConfig As String<br />Dim fileDispName As String<br />Dim fileOptions As Long<br />Dim Chk As Integer<br />Dim Fname As String<br />Dim ItiX As Single<br />Dim ItiY As Single<br />Dim ItiZ As Single<br />Dim buf As String<br />Dim Kfname As String<br />Dim Fld As String<br />Dim Sname As String<br />Dim N As Integer<br />Dim Tname As String<br />Dim KariSt As String</p><p>&nbsp;</p><p>Set swapp = Application.SldWorks</p><p>Set Part = swapp.ActiveDoc<br />Dim myModelView As Object</p><p>Filter = "全部|*.*|"<br />MsgBox ("データファイルを選択してください")</p><p><br />Fname = swapp.GetOpenFileName("Select File", "", Filter, fileOptions, fileConfig, fileDispName) '位置情報データ</p><p>If Fname = "" Then<br />&nbsp;&nbsp;&nbsp; MsgBox ("ファイルが検出できません")<br />&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; MsgBox ("中断します")<br />&nbsp;&nbsp;&nbsp; Exit Sub<br />End If</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;&nbsp;&nbsp; MsgBox ("パーツデータがあるファイルを選択してください。")<br />&nbsp;&nbsp;&nbsp; fileName = swapp.GetOpenFileName("Select File", "", Filter, fileOptions, fileConfig, fileDispName) <br />&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp; If Kfname = "" Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox ("ファイルが検出できません")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox ("中断します")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp;</p><p>Open Fname For Input As #1</p><p>Do Until EOF(1)</p><p>&nbsp;&nbsp;&nbsp; Line Input #1, buf<br />&nbsp;&nbsp;&nbsp; If buf = "" Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Do<br />&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; Chk = XYZget(ItiX, ItiY, ItiZ, buf)<br />&nbsp;&nbsp;&nbsp; If Chk &lt;&gt; 3 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MsgBox ("番目に読み込みエラーがありましたので中断します")<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit Sub<br />&nbsp;&nbsp;&nbsp; End If</p><p>&nbsp;&nbsp;&nbsp; boolstatus = Part.AddComponent(fileName, ItiX, ItiY, ItiZ)</p><p><br />Loop</p><p>Close</p><p>MsgBox ("読み込みました")</p><p>End Sub</p><p>Function XYZget(ItX As Single, ItY As Single, ItZ As Single, buf As String) As Integer</p><p>Dim KariSt As String<br />Dim KrX As String<br />Dim KrY As String<br />Dim KrZ As String<br />Dim Ln As Integer<br />Dim N As Integer<br />Dim Chk As Integer</p><p>KariSt = ""<br />Ln = Len(buf)<br />Chk = 0</p><p>For N = 1 To Ln<br />&nbsp;&nbsp;&nbsp; If Mid(buf, N, 1) &lt;&gt; " " Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KariSt = KariSt + Mid(buf, N, 1)<br />&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; If Chk = 0 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KrX = KariSt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KariSt = ""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chk = 1<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf Chk = 1 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KrY = KariSt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KariSt = ""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chk = 2<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ElseIf Chk = 2 Then<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KrZ = KariSt<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chk = 3<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; KariSt = ""<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Chk = 4<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Exit For<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; End If<br />&nbsp;&nbsp;&nbsp; End If<br />Next</p><p>If Chk = 2 Then<br />&nbsp;&nbsp;&nbsp; KrZ = KariSt<br />&nbsp;&nbsp;&nbsp; Chk = 3<br />End If</p><p>ItX = Val(KrX)<br />ItY = Val(KrY)<br />ItZ = Val(KrZ)</p><p><br />XYZget = Chk<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;</p><p>End Function</p><p>&nbsp;</p><p>&nbsp;</p><p>&nbsp;</p>]]></description>
	<dc:creator>無効なユーザ</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87859</guid>
	<pubDate>Thu, 23 May 2019 13:15:22 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87859</link>
	<title><![CDATA[無効なユーザ さんが付けたコメント]]></title>
	<description><![CDATA[<p>遅くなりましたがマクロ確認できました。</p>
<p>問題なく動いております。一番自分の使い方にあっていたのは「AddComponents」の方でした。どうもありがとうございました</p>]]></description>
	<dc:creator>無効なユーザ</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87743</guid>
	<pubDate>Wed, 22 May 2019 08:33:40 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87743</link>
	<title><![CDATA[無効なユーザ さんが付けたコメント]]></title>
	<description><![CDATA[<p>みなさん</p>
<p>いろいろご意見やご提案頂きありがとうございます</p>
<p>現在なかなか時間が取れず検証ができていませんが、結果が出ましたらまたご報告させていただきます。</p>
<p>取り敢えず中間報告という事で・・・</p>]]></description>
	<dc:creator>無効なユーザ</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87673</guid>
	<pubDate>Tue, 21 May 2019 20:04:45 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87673</link>
	<title><![CDATA[横網代 秀幸 さんが付けたコメント]]></title>
	<description><![CDATA[<p>検討用のエクセルマクロをUPしました。<a href="http://swjug.org/file/view/250123/%E9%83%A8%E5%93%81%E3%82%92%E9%85%8D%E7%BD%AE%E3%80%8Caddcomponents%E3%80%8D%E3%81%A8%E3%80%8Caddcomponents3%E3%80%8D%E3%81%AE%E6%A4%9C%E8%A8%8E%E3%83%9E%E3%82%AF%E3%83%AD">コチラ</a></p>
<p>"AddComponents3"と辻さんから紹介があった"AddComponents"です。</p>
<p>ご参考になれば、、、</p>]]></description>
	<dc:creator>横網代 秀幸</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87482</guid>
	<pubDate>Fri, 17 May 2019 12:56:13 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87482</link>
	<title><![CDATA[辻　直樹 さんが付けたコメント]]></title>
	<description><![CDATA[<p>使ったことはないので不確かですが、、、との前置きをしたうえで</p>
<p>横網代さんが紹介されている&rdquo;３&rdquo;も含めて、"AddComponent<span style="text-decoration: underline;">s</span>"（ｓ付きに注意）なら、パラメータの"Transforms"部分に回転させた状態と位置のマストランスフォームを設定すれば良いのではないでしょうか。</p>
<p>マストランスフォームは１６個の数値配列ですが、最初の０から８までが３X3の行列でX,Y,Zの向きを、９から１１がX,Y,Zの座標を、１２がスケールを表しています。（１３から１５は不使用）</p>
<p>９０度回転とのことなので、３行のうち２行の１（－１）とする列を入れ替えることで回転させることが出来ると思います。</p>
<p>＜ｚ軸を中心に９０度回転の例＞</p>
<p>1,0,0　　&nbsp; &nbsp; 0,1,0　　　0,-1,0</p>
<p>0,1,0　&rarr;　-1,0,0　or　1,０,0</p>
<p>0,0,1　　　 0,0,1　　　0, 0,1</p>
<p>座標のテキストファイルに回転を表す１列を追加して（必要なら回転方向も識別）、それによってマストランスフォームの０から８の設定を選択するようでしょうか。</p>]]></description>
	<dc:creator>辻　直樹</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87476</guid>
	<pubDate>Fri, 17 May 2019 10:46:39 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87476</link>
	<title><![CDATA[横網代 秀幸 さんが付けたコメント]]></title>
	<description><![CDATA[<p>部品データに座標系をいくつか作っておいて"AddComponents3"を使うのはどうでしょう？</p>
<p>&nbsp;</p>
<p>X,Y,Zに加えて、向き制御用のFlagを用意して対応する座標系を割り当てる、、、こんな感じ？</p>
<p>(ほぼHELPからのコピペ)</p>
<p>&nbsp;</p>
<p>Dim swApp As SldWorks.SldWorks<br>Dim assemb As AssemblyDoc<br>Dim compNames(0) As String<br>Dim compXforms(15) As Double<br>Dim compCoordSysNames(0) As String<br>Dim vcompNames As Variant<br>Dim vcompXforms As Variant<br>Dim vcompCoordSysNames As Variant<br>Dim vcomponents As Variant</p>
<p>Option Explicit</p>
<p>Sub main()</p>
<p>Set swApp = Application.SldWorks<br>Set assemb = swApp.ActiveDoc<br> <br> <br>compXforms(0) = 1#<br>compXforms(1) = 0#<br>compXforms(2) = 0#<br>compXforms(3) = 0#<br>compXforms(4) = 1#<br>compXforms(5) = 0#<br>compXforms(6) = 0#<br>compXforms(7) = 0#<br>compXforms(8) = 1#<br>compXforms(12) = 1#<br> <br> <br>'繰り返し処理～<br>　Call AddComps("C:\temp\Part1.SLDPRT", 50, 0, 50, 0)</p>
<p>'～繰り返し処理</p>
<p><br>End Sub</p>
<p><br>Sub AddComps(CompName As String, X As Double, Y As Double, Z As Double, rFlag As Integer)</p>
<p>compNames(0) = CompName</p>
<p>compXforms(9) = X / 1000<br>compXforms(10) = Y / 1000<br>compXforms(11) = Z / 1000</p>
<p><br>Select Case rFlag<br>　Case 0<br>　　compCoordSysNames(0) = "座標系1" '<br>　Case 1<br>　　compCoordSysNames(0) = "座標系2" '90&deg;回転の座標を作っておく<br>End Select</p>
<p><br>vcompNames = compNames<br>vcompXforms = compXforms</p>
<p>vcompCoordSysNames = compCoordSysNames<br>vcomponents = assemb.AddComponents3((vcompNames), (vcompXforms), (vcompCoordSysNames))</p>
<p><br>End Sub</p>]]></description>
	<dc:creator>横網代 秀幸</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87475</guid>
	<pubDate>Fri, 17 May 2019 10:37:52 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87475</link>
	<title><![CDATA[山本誠 さんが付けたコメント]]></title>
	<description><![CDATA[<p>正しい方法かはわからないけど...<br><br>部品を挿入した後に&rdquo;非固定&rdquo;にして。<br>合致で参照平面同士を合致させる。<br>部品を再度&rdquo;固定&rdquo;にする。（しなくても良い）<br>という方法はどうでしょうか？<br><br>合致によってXYZを合わせつつ、回転方向も調整することになるので<br>いろいろトライしなければいけないかもですが、<br>うまく行けばマクロを実現できると思います。</p>]]></description>
	<dc:creator>山本誠</dc:creator>
</item>
<item>
	<guid isPermaLink='true'>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87473</guid>
	<pubDate>Fri, 17 May 2019 10:09:35 +0900</pubDate>
	<link>http://swjug.org/blog/view/249433/%E9%83%A8%E5%93%81%E3%82%9290%E5%BA%A6%E5%9B%9E%E8%BB%A2%E3%81%97%E3%81%A6%E9%85%8D%E7%BD%AE%E3%81%99%E3%82%8B#item-annotation-87473</link>
	<title><![CDATA[柴田幸 さんが付けたコメント]]></title>
	<description><![CDATA[<p>いろいろと調べてみましたがmacroでcomponentを回転させるのって意外と難しいんですね。</p>
<p>もし読み込む部品の数がそんなに多くないのなら読み込む部品の方に回転したコンフィグを</p>
<p>作っておいてaddcomponent5のコンフィグオプションで選ぶというのも良さそうですが、</p>
<p>読み込む部品が沢山あったり部品をいじる権限がなかったりすると無理ですね。</p>]]></description>
	<dc:creator>柴田幸</dc:creator>
</item>

</channel>
</rss>