0

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

ありがとう!

4

1 に答える 1

0

If scaleFactor > 0 then

これは有効な Ruby 構文ではありません。実行時に Ruby コンソールを開いたままにすると、次のエラーが表示されます。

Error: #<SyntaxError: <main>: syntax error, unexpected keyword_then, expecting end-of-input

代わりに、if scaleFactor > 0

UI.inputboxまた、 an - をフィードしています。Integerこれは、SketchUp が戻り値を an にキャストし直すことを意味しますInteger。おそらく float 値を指定したいでしょうdefaults = [0.0]

于 2013-10-18T10:47:24.387 に答える