仕事のカタマリにようこそ!  [ ログイン | ユーザ登録 ]
フォーラムから検索

機械用3D-CAD SolidWorks非公認のユーザサイトです
 
 
Web katamari.org
仕事のカタマリ
ホーム リンク集 ダウンロード フォーラム(掲示板) FAQ お問い合わせ









フォーラムニュース: 質問、相談カテゴリに「SolidWorks操作方法」に関するフォーラムを追加しました。(2003/11/27)
いらっしゃい、 ゲストさん. まずはこちら→ ログイン または 登録. 2024/11/27 - 09:52:53
ホーム ヘルプ 検索 ログイン 登録

仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 部品原点を合致・スケッチ拘束で使用する[VBA] 前のトピック 次のトピック
ページ: [1] Page Bottom 返信 返信のお知らせ Print 
   著者  トピック: 部品原点を合致・スケッチ拘束で使用する[VBA]  (閲覧数 3706 回)
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
部品原点を合致・スケッチ拘束で使用する[VBA]
« 投稿日: 2007/05/14 - 18:52:35 »
引用して返信

こんにちはhisaです

ふと思い立ったので投稿します

APIで、部品原点を合致やスケッチ拘束で使用する場合、単に原点のFeatureを取得して
選択するだけでは、ウマくいきません。
厳密には、原点の内部的に存在するスケッチ点を選択することで可能となります。
SelectByID2等で選択する手もありますが、Assembly上の構成部品が対象の場合、
名前の解決が結構面倒です。

ですので、以下に構成部品(Component2)から原点内スケッチ点を取得するサンプルを
示します。

===================================
Option Explicit

Sub main()
   
    Dim swApp          As SldWorks.SldWorks
    Dim swModel        As SldWorks.ModelDoc2
    Dim swSelMgr        As SldWorks.SelectionMgr
    Dim swComp          As SldWorks.Component2
    Dim swCompFeat      As SldWorks.Feature
    Dim swPoint        As Variant
   
    Set swApp = Application.SldWorks
    Set swModel = swApp.ActiveDoc
    Set swSelMgr = swModel.SelectionManager
   
    Set swComp = swSelMgr.GetSelectedObjectsComponent2(1)
   
  'Case(1):Feature名が"原点"と限定されている場合
    Set swCompFeat = swComp.FeatureByName("原点")
   
    If swCompFeat.GetTypeName = "OriginProfileFeature" Then
        Set swCompFeat = swCompFeat.GetSpecificFeature2
        swPoint = swCompFeat.GetSketchPoints2
        swPoint(0).Select4 False, Nothing
    End If
  'Case(1):End

  'Case(2):Feature名が"原点"と限定されていない場合
    Set swCompFeat = swComp.FirstFeature
   
    While Not swCompFeat Is Nothing
        If swCompFeat.GetTypeName = "OriginProfileFeature" Then
            Set swCompFeat = swCompFeat.GetSpecificFeature2
            swPoint = swCompFeat.GetSketchPoints2
            swPoint(0).Select4 False, Nothing
        End If
    Wend
  'Case(2):End
   
End Sub
===================================

Case1は、Feature名が"原点"と特定されている場合のCodeです。
Case2は、Feature名が"原点"と特定されていない場合のCodeです。
場合によって使い分けてください。
ユーザーが任意に変えられる情報なので、Case2をお勧めですが…

以上、ご参考まで。
議長に報告する   記録済み
hisa
カタマリの王様!?
*****

オフライン

投稿: 507



PANDA-Z!!

プロファイルを見る WWW
Re:部品原点を合致・スケッチ拘束で使用する[VBA]
« 返信 #1 投稿日: 2007/08/09 - 17:36:15 »
引用して返信

久々にトピックスを読み返していたら、恐ろしい間違いを発見しました

Case2のコードが、無限ループしてしまっています

    While Not swCompFeat Is Nothing
        If swCompFeat.GetTypeName = "OriginProfileFeature" Then
            Set swCompFeat = swCompFeat.GetSpecificFeature2
            swPoint = swCompFeat.GetSketchPoints2
            swPoint(0).Select4 False, Nothing
        End If

    Set swCompFeat = swCompFeat.GetNextFeature

    Wend

上記赤文字の行を追加しないといけませんでしたね…

誠に申し訳ありませんでした・・・m(__)m
議長に報告する   記録済み
ページ: [1] Page Top 返信 返信のお知らせ Print 
仕事のカタマリ 掲示板  |  SolidWorks一般  |  SolidWorksのカスタマイズ (議長: webmaster)  |  トピック: 部品原点を合致・スケッチ拘束で使用する[VBA] 前のトピック 次のトピック
ジャンプします: