y-nakatsuka
カタマリの王様!?
オフライン
投稿: 187
|
|
Re:SDM1.0ライブラリ
« 返信 #20 投稿日: 2004/07/16 - 20:32:54 » |
|
苦節3年 ついに王様になれました(笑)!
どうもありがとうございます。 最初webmasterさんにpascalworksでお世話になったころのことが懐かしく思いだされます。ホントにお世話になっております。 本日社内で、3DCADの正式運用ルールの全説明を終わらせ、形上は3DCADの運用準備が終わりました いままでも一応3Dで設計してたのですが、ルールがはっきり決まっていなかったため、無法地帯に近い状態で・・・ ここまでホントに長かった・・・きっとこのサイトなくしてはここまでたどり着けなかったものと思います。 これからも是非是非よろしくお願いいたしますね。
ところで、おっしゃるようにsdmはswexplorerのapiみたいなもののようですね。あたらしい機能はないでしょうけど、単体で使うことで、何らかのメリットはだせるかな、という感じはします。(特に速度面で。)swexplorerの説明に「pdmではないが、近い動作をする」のような内容が書かれてあるので、sdmはやはりmakoronさんがおっしゃるようにsolidworks data managementなのかなと。 edrawのAPIのヘルプが出るので、こちらもいずれ出ると思ってます。
なもんで、swexplorerを見ていると、どの関数がどの機能に該当するのか、大体わかるのですが、sdmHeaderで使えそうな名前のgetStateとsetStateがなんなのかがわかりません。抑制状態とかにも関係ないみたいですし、そもそもactive MRR(ミラー?) Deleteの3つの状態っていうのが全く意味不明。なんだかあまり使えない?
|
|
|
|
Tama
Jr. メンバー
オフライン
投稿: 12
I'm a llama!
|
|
Re:SDM1.0ライブラリ
« 返信 #21 投稿日: 2004/07/16 - 21:03:17 » |
|
こんにちは〜、Tamaです。
簡単そうなところから攻めています。
sdmConfigMgrクラス。
「sdmConfigMgr.LoadConfigMgr」
Sub LoadConfigMgr(fileName As String)
ファイル名を指定して、コンフィギュレーション情報を読み込みます。
「sdmConfigMgr.ConfigCount」
Property ConfigCount As Long
コンフィギュレーション数
「sdmConfigMgr.GetCurrentConfigName」
Function GetCurrentConfigName(pConfigName) As Boolean
pConfigNameにコンフィギュレーションのストリーム名が返されます。 SolidWorks APIのConfiguration::GetStreamNameと同等です。 メソッドの実行が成功すると True、失敗すると(おそらく)Falseを返します。
使い方 Code:Dim objSdmConfigMgr As SDMLib.sdmConfigMgr Set objSdmConfigMgr = New SDMLib.sdmConfigMgr objSdmConfigMgr.LoadConfigMgr "C:MyPartsPart1.sldprt"
Dim lngConfigCount As Long lngConfigCount = objSdmConfigMgr.ConfigCount
Dim vntConfigName As Variant Dim blnResult As Boolean blnResult = objSdmConfigMgr.GetCurrentConfigName(vntConfigName)
Set objSdmConfigMgr = Nothing |
コンフィギュレーションがストリーム名でしか取得できないのであまり使えないですね。
|
|
|
|
y-nakatsuka
カタマリの王様!?
オフライン
投稿: 187
|
|
Re:SDM1.0ライブラリ
« 返信 #22 投稿日: 2004/07/20 - 17:28:24 » |
|
Tamaさんこんにちは。いつもお世話になっております ところで当方、情けないことにそろそろわかるやつがなくなってきました というわけで、次は何かのきっかけでわかったときにでも追加しまーす。
「smSummaryProperties.LoadFromFile」 Function LoadFromFile(filepath As String) As Long
smSummaryPropertiesオブジェクト内に、ファイルパスにより指定されたファイルのWINDOWS上で右クリックした際の「プロパティ」‐「概要」の情報を読み込みます。
smSummaryProperties.lastAuthor(最終保存者) smSummaryProperties.lastSaveDate(最終保存日)
などが使えそうといったところです。
私の環境ではいつも「-1」が関数の返り値として返ってきますが、意味はよくわかりません。 失敗しているのかも。
「smSummaryProperties.GetCustPropCount」
Function GetCustPropCount() As Long
LoadFromFileで読み込んだファイルのユーザ定義プロパティの個数を返します。
|
|
|
|
Tama
Jr. メンバー
オフライン
投稿: 12
I'm a llama!
|
|
Re:SDM1.0ライブラリ
« 返信 #23 投稿日: 2004/07/20 - 22:42:55 » |
|
こんばんは〜、Tamaです。
y-nakatsukaさん、こちらも簡単そうなのがなくなってきて困りました。 そこで、VBの参照設定でほかに面白そうなdllでもないかな〜とみていると、「SwDocumentMgr 1.0 Type Library」というのがありました! SolidWorks 2004からなのかな
これってsdmがちょっとリッチになったAPIのようにみえます。
で、ちょこっとなかをみるとSwDMComponentクラスにConfigurationNameプロパティがあって、これを使うと構成部品のコンフィギュレーションが取れるかも。
|
|
|
|
y-nakatsuka
カタマリの王様!?
オフライン
投稿: 187
|
|
Re:SDM1.0ライブラリ
« 返信 #24 投稿日: 2004/07/21 - 18:20:37 » |
|
Tamaさんこんにちわ。 ライブラリみてみるとなんだかいろいろありますね。 全く知らなかったです。 私の環境でもSwDocumentMgr 1.0はあるみたいですね。 ポインタがたくさん出てくるようで、VBで使いかたがよくわかってません でもとにかく、内容はわからなくても、こんなものがあるということがわかっただけで、ちょっとレベルアップした気分です
|
|
|
|
Tama
Jr. メンバー
オフライン
投稿: 12
I'm a llama!
|
|
Re:SDM1.0ライブラリ
« 返信 #25 投稿日: 2004/07/21 - 22:07:36 » |
|
こんばんは〜、Tamaです。
SwDocumentMgr 1.0 はCreateObjectもできませんでした。どうやったら使えるのかさえわかりません。 わざとVBからは使えないようにしてあるのかもしれませんね。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:SDM1.0ライブラリ
« 返信 #26 投稿日: 2004/07/28 - 20:43:37 » |
|
みなさん、こんばんわ。
SwDocumentMgr 1.0 について調べてみました。 (結局使えないことがわかったのですが )
まず、オブジェクトブラウザでSwDocumentMgr を眺めてみました。
SwDMClassFactoryがどうやら曲者のようです。 SwDMClassFactoryのGetApplicationメソッドで、 SwDMApplicationクラスオブジェクトが取得できるみたいです。
さらに、SwDMApplicationクラスを見てみると SwDMDocumentクラスオブジェクトとSwDMSearchOptionクラスオブジェクト が取得できそうです。
で、実際にそれらしくコードを書いて見ましたが 『ActiveX コンポーネントはオブジェクトを作成できません。(Error 429)』 で、はねられてしまいます。 ヘルプを呼んでみると、 「〜 オブジェクトの中には、オブジェクトが作業中のマシンでインスタンス作成用に登録されていることを示すライセンス キーがコンポーネントで見つかった後にだけ、インスタンス作成できるものがあります。 〜」 と書いてあります。
Function GetApplication(LicKey As String) As SwDMApplication に、LicKeyと書いてあり、ここにライセンスキーを入力する必要があるのかも 知れないと思い、SWのシリアル番号を入れてみましたがダメでした。
残念ながら、これより先に進むことが出来ませんでした。 一応サンプルコードを付けておきます。
Private Sub Form_Load() '一番最初に構築する? 'いちおうobjSwDMClassFactoryオブジェクトは構築できるみたい。 Dim objSwDMClassFactory As SwDocumentMgr.SwDMClassFactory Set objSwDMClassFactory = CreateObject("SwDocumentMgr.SwDMClassFactory") 'SwDMApplicationオブジェクトを構築する? 'そのためにLicKey(ライセンスキー)が必要みたい! 'LicKeyはどうやって見つけるの? Dim objSwDMApplication As SwDocumentMgr.SwDMApplication Dim strLicKey As String Set objSwDMApplication = objSwDMClassFactory.GetApplication(strLicKey) 'SwDMApplicationオブジェクトが構築できたら下の各オブジェクトも構築できる? Dim objSwDMDocument As SwDocumentMgr.SwDMDocument Dim strFullPathName As String Dim lngdocType As Long Dim blnallowReadOnly As Boolean Dim lngresult As Long Set objSwDMDocument = objSwDMApplication.GetDocument(strFullPathName, lngdocType, blnallowReadOnly, lngresult) Dim objSwDMSearchOption As SwDocumentMgr.SwDMSearchOption Set objSwDMSearchOption = objSwDMApplication.GetSearchOptionObject() End Sub
|
|
|
|
y-nakatsuka
カタマリの王様!?
オフライン
投稿: 187
|
|
Re:SDM1.0ライブラリ
« 返信 #27 投稿日: 2004/07/29 - 13:32:58 » |
|
makoronさんこんにちわ。
添付していただいてるソースを実行してみましたが、確かにおっしゃるとおりのメッセージがでて進みませんでした。
ネットワークライセンスファイルの中身を入力してみたりしましたがダメでした
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:SDM1.0ライブラリ
« 返信 #28 投稿日: 2005/01/21 - 12:44:15 » |
|
少し時間がたってますが、SDMLibのヘルプを作ってみました。 ...と言うより作りかけですが
作りかけヘルプを添付しますので、みんなで協力して完成させてみませんか? (HTMLで作ってあります。)
|
|
|
|
y-nakatsuka
カタマリの王様!?
オフライン
投稿: 187
|
|
Re:SDM1.0ライブラリ
« 返信 #29 投稿日: 2005/01/24 - 10:09:17 » |
|
makoronさんこんにちわ
どえらいのを作られましたね。正規のAPIヘルプよりよくできてるのでは
SDMのことはしばらく忘れてましたが、お手伝いさせていただきたいと思います。
「ウィキペディア」みたいにヘルプが完成していくといいですね。
|
|
|
|
y-nakatsuka
カタマリの王様!?
オフライン
投稿: 187
|
|
Re:SDM1.0ライブラリ
« 返信 #30 投稿日: 2005/01/24 - 10:47:08 » |
|
smSummaryProperties プロパティに関する操作をSolidWorksを立ち上げずにすることができるクラス。
smSummaryProperties.LoadFromFile(ファイルパス)
SWの指定したファイルのプロパティ(ユーザ定義プロパティ含む)をオブジェクト内にロードする。 コンフィギュレーション特有プロパティを使う時は多分smSummaryProperties.LoadFromConfig()を使う。(未確認)
retvalは、メソッドが 成功の場合-1 失敗の場合 0 を返すみたい。
smSummaryProperties.SetPropValueByName(プロパティ名,値)
LoadFromFileで取り込んだファイルのプロパティを書き換える。追加もできる。 ただし、プロパティが「数値型」だった場合、値がバグっているような? WINDOWSからユーザ定義プロパティを書き換えたときのバグと関係あり?
ちなみにこのメソッドで書き換えたプロパティは次項、SaveSummaryInfoToFileでsaveするまで、実際には書き換えられません。
retvalは、メソッドが 成功の場合-1 失敗の場合 0 を返すみたい。
Void smSummaryProperties.SaveSummaryInfoToFile()
LoadFromFileで取り込んだファイルのプロパティをSetPropValueByName等で変更した場合、このメソッドでsaveする。saveして初めて実際に変更される。
私は、VBをまじめに勉強したことがないので、詳しいことはよくわかってませんが、「Call」を頭につけないと、動かないみたい・・・詳しい人いらっしゃったらどういうことなのか教えてください・・・
ともあれ、これらを使うと、SolidWorksを開かずに、ファイルにプロパティを追加、変更等の作業ができるようで、一括作業等に役に立つかもしれません。
使用例
Dim smSummaryPropertiesObj As New SDMLib.smSummaryProperties Dim retval As Long retval = smSummaryPropertiesObj.LoadFromFile("ファイルパス") retval = smSummaryPropertiesObj.SetPropValueByName("プロパティ名", "値") Call smSummaryPropertiesObj.SaveSummaryInfoToFile
Makoronさんよろしければおひまなときにでもヘルプに追加してみてください。例によって内容の保証はしかねますが
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:SDM1.0ライブラリ
« 返信 #31 投稿日: 2005/01/25 - 10:43:09 » |
|
y-nakatsukaさん、おはようございます。
情報ありがとうございました。 追加したヘルプを添付しておきます。
|
|
|
|
BePositive
新人さん
オフライン
投稿: 7
I'm a llama!
|
|
Re:SDM1.0ライブラリ
« 返信 #32 投稿日: 2005/12/11 - 14:22:39 » |
|
突然ですが小発見(大発見じゃない)です。
smSummaryProperties.LoadFromFile(ファイルパス)
で、Office文書(ワードやエクセル)ファイルをロードすると、同じようにプロバティが取り出せます。
少し便利です。
|
|
|
|
Makoron
カタマリの王様!?
オフライン
投稿: 1277
SW2011SP5.0
|
|
Re:SDM1.0ライブラリ
« 返信 #33 投稿日: 2005/12/12 - 08:50:01 » |
|
SDMからもOKなんですね。 ...と、簡単な前振り。
多分、SWはMicrosoftの「http://support.microsoft.com/default.aspx?scid=kb;ja;224351」に書いてある技術と同じ物(似ているもの?)を使っているみたいです。
Microsoftが配布している「Dsofile.dll 」と言うのを使用すると、SDMとほぼ似たような処理が行えます。 ただし、SW特有のコンフィギュレーションを扱うものは出来ないようですが...。
ユーザ定義プロパティの取得くらいであれば、SDMを使わなくても実現できるのではないかと思います。
|
|
|
|
webmaster 管理人
議長 カタマリの王様!?
オフライン
投稿: 649
|
|
Re:SDM1.0ライブラリ
« 返信 #34 投稿日: 2006/02/06 - 22:20:47 » |
|
この手のリファレンスはフォーラム形式よりWikiの方が作りやすいかと思ってhttp://wiki.katamari.orgにSDM1.0リファレンスのページを作ってみました。ちなみにこのWikiページはウィキペディアのプログラムを使わせてもらっています。
ページの構成がいまいちで追加がやりづらいとか不具合があるのでしばらくはお試し期間と思って使ってみてください。とりあえず誰でも更新はできるので誤記訂正や追加は勝手にやってください。ユーザ登録してもらえば添付ファイルも使えます。
|
webmaster (仕事のカタマリ管理人)
|
|
|