Sketchup のプラグインの作業を開始しましたが、助けを求めていました。現在、プラグインを使用すると、フォルダーを選択してから、フォルダー内のすべての DXF または DWG ファイルを開き、個別の .skp ファイルとして保存できます。これは、.skp ファイルを、DXF または DWG ファイルを使用しない別の 3D プログラムにインポートする必要があるために作成されました。
スクリプトには他にも多くの機能がありますが、インポートと保存を行う「主力」の部分を次に示します。
model.import filename, false
outputname = File.basename(filename) + ".skp"
model.save outputname
model.entities.clear!
ここで、リストされたコードは for ループに含まれています。これは、各モデルが大きすぎることを除いて、完全に機能します。ユーザーに「倍率」の入力を求め、それを使用してモデルを縮小する必要があります。
ここで、コードの「作業」部分の前に次のことを行いました。
scalePromptResult = UI.messagebox "Woudl you like to adjust the scale for ALL models being converted?", MB_YESNO
scaleFactor = 0
if scalePromptResult == 6
prompts = ["Please enter the scale factor you want to use"]
defaults = [0]
inputArray = UI.inputbox prompts, defaults, "Scale Factor"
scaleFactor = inputArray[0]
end
これにより、倍率の入力が求められます。そして、それが私が知っているすべてです。私はこれをすべて正しく呼んでいますか?私は、Objective C と .Net に精通しています。指定された値を適切な数値に変換するために他に必要なことはありますか。
さて、私がそれを正しければ、おそらく誰かが私のコードでこれが機能しない理由を教えてくれるかもしれません:
If scaleFactor > 0 then
transform = Geom::Transformation.new([scaleFactor, scaleFactor, scaleFactor])
model.entities.transform_entities(transform, model.entities)
end
ありがとう!