VectorWorksClub北海道
喫茶室
Club北海道
<入門者歓迎です。ベテランのあなた、VectorScriptの普及にお力添えを!>
ご利用規程] [記事を検索過去記事]  バックナンバー] 

ハンドル名
Eメール: 入力不要!:公開されます。
タイトル: 各記事の[返信]で自動入力されます。
メッセージ:改行しながら入力して下さい。*半角カタカナは使用厳禁です!

紹介URL: 1カ所だけご紹介頂けます。
削除キー: 英数字で8文字以内:ご投稿を削除できます。  クッキー保存:次回の入力を省けます。
認証キー: 右の数字を入力して下さい 認証数字 リロードすると数字が変わります。
Page: | 1 | 2 | 3 |

152  Re:[151] 面積スタンプ    雨ニモマケズ     2018/06/23(Sat) 09:57返信

原始的ですが、図形の中心は図形の境界ボックスの座標から取得できそうです。たとえば、
GetBBox(h, x1,y1,x2, y2);
MoveTo( (x1+x2)/2, (y1+y2)/2 );
ただし、L形など入り隅がある図形では、外にこぼることがあります。

図形の選択はSelectObjですが、検索条件をゼロから自分で書くより、いったん図形選択マクロで条件を設定したスクリプトを作り、そのスクリプト内容をコピペして使うのが楽だと思います。

選択図形すべてについて同様の処理を施すには、ForEachObjectInList 。

文字は、とくに色を決めずにNameClassで特定のクラスを指定して書き出しておいて、スクリプト実行後に手作業でクラスの属性を設定するのがよいと思います。もちろん事前に属性設定しておいても大丈夫です。SetCL云々で、スクリプト内でクラス属性を設定することも可能ですが、後から変更する可能性がある場合は、スクリプトに仕組まない方がよいと思います。

それから検索で見つからなかったとのことですが、Vectorworksのインストールフォルダの中の、ヘルプフォルダの中の、Script Function Referenceを使っていないのでしょうか? わりと簡単に見つかると思うし、すべてに目を通しても大した分量ではありません。


151  面積スタンプ    シュウ     2018/06/22(Fri) 13:56返信

はじめまして Scrpt初心者です。
最近VWを使って仕事をしているのですが個別で面積を書き出すのが時間がかかるので調べていたところ
他サイトで公開していた面積スタンプを見つけ使っているのですが、もっと改良したいと思い調べております。
現在は一つの図形にしか適用されず、ここの過去の多角形の面積スタンプのコードなど入れてみたのですがエラーとなりました。やりたい事は
1 複数の図形を選択してその中心に書き出す(シンボルではない)
2 現在のScrptだと書き出された文字の背景色が無地なので白にしたい(文字自体の色も指定出来る?)
出来るかどうかはわかりませんがこんな感じです。
コードを全て書いて教えて下さいとは言いませんがコードの関数の名称すら解らないので
検索するワードを教えて頂きたいです、例えば複数の図形を選択する事はなんて言う言い方なのか?
図形のべた塗りなどは検索で出て来るのですが、書き出された文字の背景などは探せなかったので。
宜しくお願いいたします


150  Re:[149] プラグインオブジェクトに組み込んだ寸法線の文字オフセット    与太郎     2018/01/28(Sun) 16:48返信

なんとか寸法を再描画させるために、SetSegPtなどで測定点を移動するのはどうでしょう?


149  Re:[148] プラグインオブジェクトに組み込んだ寸法線の文字オフセット    タニ     2018/01/24(Wed) 10:05返信

与太郎 様

ご返答ありがとうございます。

ResetObjectやReDraw、ReDrawAllを試してみましたが、
特に変化はありませんでした。


148  Re:[147] プラグインオブジェクトに組み込んだ寸法線の文字オフセット    与太郎     2018/01/23(Tue) 18:01返信

パラメータ変更後にResetObjectを実行してますか?


147  Re:[146] プラグインオブジェクトに組み込んだ寸法線の文字オフセット    タニ     2018/01/23(Tue) 16:51返信

与太郎様

ご返答ありがとうございます。

教えて頂いた内容で検証してみました。

結果として、識別番号:39(文字を反転)あるいは43(文字オフセット)で対応できるかと思いましたが、ダメでした。

■識別番号:39(文字を反転)
⇒文字位置は変わらず、文字が反転するのみ。

■識別番号:43(文字オフセット)
 ⇒全く反応せず。

ただし、どちらもPIOを分解すると正しく処理されていました。

PIO内に寸法線を組み込むことは特殊なことなのでしょうか。
今のところ解決策が見つかっていません。

他の解決方法があればご教授願います。


146  Re:[145] プラグインオブジェクトに組み込んだ寸法線の文字オフセット    与太郎     2018/01/14(Sun) 12:40返信

2017で試せる環境がありませんが、プラグインオブジェクトのパラメータはSetObjectVariable??とGetObjectVariable???で読み書き出来ます。(???はBooleanやRealなどのパラメーターの種類)
パラメータの番号はVectorScript Function Referenceの「Additional Resource 付録」→「VectorScript Appendix」→「Appendix G - Object Serectors」に記載されているはずです。
データパレットの「文字を反転」に相当する項目があればそれを変えれば良いと思います。


145  プラグインオブジェクトに組み込んだ寸法線の文字オフセット    タニ     2018/01/10(Wed) 13:23返信

お世話になります。
VS初心者です。

下記スクリプトを利用して寸法線を組み込んだプラグインオブジェクト(PIO)を作成し使用しています。

LinearDim(startPtX, startPtY, endPtX, endPtY : REAL; offsetDistance : REAL (Coordinate); dimType, arrow, textFlag : INTEGER; textOffset : REAL);

以前はVW2012を使用しており、PIOを回転させた際、
組み込んだ寸法線の文字位置は通常の寸法線と同じように
常に寸法線の上側及び左側になっていました。

しかし、VW2017で同じPIOを使用してみると組み込んだ寸法線の文字位置は固定されてしまい、
PIOを回転させると寸法線の下側や右側にも表示されてしまいます。

■確認事項
 ・PIOを回転させても組み込んだ寸法線の文字位置は
  通常の寸法線のように常に上側及び左側にならないのでしょうか。

 ・スクリプトを利用して文字オフセットのパラメータを設定することは可能でしょうか。

以上、よろしくお願いいたします。


144  Re:[143] [142] 引き出し線ツールのようなツールを作りたい    タニ     2017/12/21(Thu) 17:25返信

masafumi様

ご返答ありがとうございます。

VectorScriptで「引き出し線」ツールのような仕様は実現が難しそうですね。
私なりにも解決策を探ってみましたが、良い方法が見つかっていません。

様々な仕様をご検討頂き非常に助かります。
参考にさせて頂きます。


143  Re:[142] 引き出し線ツールのようなツールを作りたい    masafumi     2017/12/18(Mon) 20:46返信

こんばんは、タニさん。

ツールの「2D変形」を実行すると良いかと思いまして、VectorScript Appendices を見ると「2D変形」の
パラメーターは (-214)でしたので、プログラムの最後に
SetTool(-214);
を入れて作成した2Dパスオブジェクトを変形出来るようになりました。でもそれですと「引き出し線」ツールのように
連続して、作成した2Dパスオブジェクトを使用出来ませんでした。「引き出し線」ツールが選択されたままの状態です。(当然ですが・・・)
作成した2Dパスオブジェクトを使うたびに、ツールをクリックしなければなりません。また後から選択しても「引き出し線」ツールの
ように変形出来るようになりません。CallTool も試してみました。
CallTool(-214);
CallTool の説明には「指定した番号のツールを選択します。ツールが使われた後は、この手続きが実行される前に選択されていた
ツールを選択します。」と有りましたので大丈夫だろうと思っていましたが、私の環境では上手くいきませんでした。
VectorWorks Ver2011 Win8です。
そればかりかメニューの「ツール」→「スクリプト」→チャンクメニューがフリーズ状態になります。

パラメーターを利用してツールが選択状態になれば変形ツールを実行する。みたいなことが出来れば良いように思いますが、
2Dパスオブジェクトの内部仕様が良くわりませんので、私のわかる範囲はこのくらいです。
あまりお役に立てなくて申し訳ありません。どなたフォローお願いします。m(_ _)m


142  Re:[140] 引き出し線ツールのようなツールを作りたい    タニ     2017/12/18(Mon) 14:43返信

masafumi様

ご返答ありがとうございます。

Scriptを明記頂き非常に理解しやすく、
ご教示頂いた「2Dパスオブジェクト」は描画時の操作感が
私のイメージに非常に近いです。

確認ですが、描画後の修正において、
「引き出し線ツール」のようにクリックした3点の位置を
マウス操作で微調整するようなツールは
「2Dパスオブジェクト」で作ることは難しいでしょうか。

「2Dパスオブジェクト」ですと、オブジェクトをダブルクリックして
パスの修正を行う必要があり、操作性があと一歩といった感じです。

No.138で回答させて頂いた方法を利用して1点型オブジェクトで製作してみましたが、
修正の際はデータパレットのパラメータを毎回手入力する必要があり、
操作感に不満を感じています。

今回ご教示頂いた内容でも非常に参考になるため、
もう少し対応策を探ってみます。

引続きよろしくお願いいたします。


141  Re:[139] パラメータによる角度入力    タニ     2017/12/18(Mon) 14:08返信

管理人様

ご返答ありがとうございます。

VectorScriptを利用してVectorworksでの作図作業効率化を進めています。
HelpやReferenceだけでは理解できないことが多々あり、
このサイトで助けて頂きながら日々勉強しています。

今後もこのサイトが多くの方に活用され、
作図作業においても最近話題の働き方改革が
いっそう進むことを期待しています。

今後もよろしくお願いいたします。


140  Re:[136] 引き出し線ツールのようなツールを作りたい    masafumi     2017/12/17(Sun) 20:47返信

こんばんはタニさん。masafumiと言います。よろしくお願いします。

「ツール」でGetPtを使って3点クリックの場合です。

{*********************** 引き出し線ツール(ポリライン) *********************}
Procedure leader_line;
var
px1,py1,px2,py2,px3,py3:Real;
begin
{3点クリック}
GetPt(px1,py1); {マウスクリックした1点目の座標を取得}
GetPt(px2,py2); {マウスクリックした2点目の座標を取得}
GetPt(px3,py3); {マウスクリックした3点目の座標を取得}
OpenPoly;
Poly(px1,py1,px2,py2,px3,py3);
SetMarker(LNewObj, false, true, 0, 10000);
end;
run(leader_line);
{*****************************************************************************}

こんな感じですが GetPt ですと、どこをクリックしたのかわかりにくいですね。


2Dパスオブジェクトの方が基軸線が表示されますので使いやすいように感じます。
2Dパスオブジェクトの簡単な例です。パラメーターを使っていないので、そのまま貼り付ければ使えると思います。

{************** 2Dパスオブジェクト **********************}
Procedure leader_line;
var
i:Integer;
oh,rh,wh,ph:HANDLE;
vt,vn :INTEGER;
px,py,ar :REAL;
objName :STRING;
begin
{カスタムオブジェクトのハンドル等を取得}
if GetCustomObjectInfo(objName,oh,rh,wh) then
begin
{カスタムオブジェクトのハンドルからパス図形のハンドルを取得}
ph:=GetCustomObjectPath(oh);
{パス図形の頂点数を取得}
vn:=GetVertNum(ph);
OpenPoly;
BeginPoly;
for i:=1 to vn do
begin
{頂点の座標や頂点タイプを取得}
GetPolylineVertex(ph,i,px,py,vt,ar);
AddPoint(px,py); {頂点を追加}
end;
EndPoly;{多角形の作成終了}
{マーカーを設定}
SetMarker(LNewObj, false, true, 0, 10000);
end;
end;
run(leader_line);
{************************ ここまで **************************}

2Dパスオブジェクトですので、マウス3点目でダブルクリックをしないと終了しません。
4点目、5点目でダブルクリックしてもライン数が増えるだけで使えますが・・・。(^_^;)

これに文字列等をラインに合わせて表示するようにするなり、いろいろアレンジすれば使えるようになるかも?
文字列等を入力する場合はパラメータを使った方が良さそうですね。

マーカーの詳細は VectorScript Appendices の最後の方に Marker Styles が書かれています。
そちらを参考にしてください。


139  Re:[138] パラメータによる角度入力    管理人     2017/12/13(Wed) 15:14返信

>  ⇒パラメータの型は「Number」で角度を数値入力し、
>   スクリプトでラジアン変換して三角関数を利用してX,Y座標で対応しました。

タニさん、ご報告、ありがとうございます。
クラブの財産として、みなさんに開示させて頂きます。

他のご質問につきましては、回答者が現れるか不明ですが、
疑問自体が、VectorScriptを学ぶ人には貴重です。
いわゆる「良い質問です」というものだと存じます。


138  Re:[137] パラメータによる角度入力    タニ     2017/12/13(Wed) 14:35返信

下記の件、とりあえずの方法で自己解決しました。

> パラメータの型は「Dimension」を使用するのでしょうか?
> また、「#60d」の変わりにパラメータを代入したらよいのでしょうか。

 ⇒パラメータの型は「Number」で角度を数値入力し、
  スクリプトでラジアン変換して三角関数を利用してX,Y座標で対応しました。

No.136の質問のみご教示よろしくお願いいたします。


137  パラメータによる角度入力    タニ     2017/12/13(Wed) 11:44返信

お世話になります。
VS初心者です。

プラグインオブジェクトで直線を描く際に、
パラメータに角度を入力するツールを作りたいと思っています。

通常、「LineTo(900,#60d);」などと入力すると思いますが、
パラメータによる角度の入力方法が分かりません。

パラメータの型は「Dimension」を使用するのでしょうか?
また、「#60d」の変わりにパラメータを代入したらよいのでしょうか。

No.136の質問と合わせてよろしくお願いいたします。


136  引き出し線ツールのようなツールを作りたい。    タニ     2017/12/12(Tue) 15:40返信

お世話になります。
VS初心者です。

プラグインオブジェクトで引き出し線ツールのように
画面上で任意の3点をクリックして矢印付きの折れ線を描きたいと思っています。
任意の3点は描画後に位置修正できるようにもしたいです。

■質問1
 ・プラグインコマンドの種類は何を選べばよいでしょうか。
  (ツール?・1点型オブジェクト?・2Dパスオブジェクト?)

■質問2
・スクリプトの流れを教えて頂けないでしょうか。
  (GetLine(VAR p1X,p1Y,p2X,p2Y:REAL);を使用する?)
(矢印の設定はどのようにする?)

過去に1点型オブジェクトやメニューは作成した経験がありますが、
その他の種類は作成経験がなく理解できていません。

よろしくお願いいたします。


135  坪なんとかなりました    karen     2017/08/26(Sat) 17:39返信

こんにちは。

ツールマクロを使ってMSゴシックで書いた寸法文字のコマンドを作り、
スクリプト編集でフォント番号を参照して、
面積スタンプのスクリプトを書き換えたら、
坪の表記に成功しました。

ツールマクロで単純に線種設定はよく作るのですが、
面とかクラスとか選択を沢山するとうまくいかないことがあります。
寸法線の文字サイズは必ずその通りには取れなくて、書き換えてます。
今回、少し発展できました。

非常に嬉しいです。
与太郎さんにお答えいただいたので、頑張れました。
ありがとうございます。


134  Re:[133] 面積スタンプ    karen     2017/08/21(Mon) 19:00返信

> うーん、困った。
> 不具合が再現出来ないのです。
> こちらはMacのデモ版ですけど、英語フォントにしても「坪」は表示されてしまいます。
> とりあえず、「坪」を別の文字に変えて様子を見るくらいしか思いつきません。
> あと、このスクリプトでは縮尺によって表示される数値が変わるとは思えないので、そこも疑問です。

与太郎さん、考えていただきありがとうございます。
縮尺を変えてから、元に書いた0uになってしまった小さい四角形を消して、
再度四角形を大きく描いて面積スタンプを取り直したら数字が出ました。
説明不足でごめんなさい。

坪の表示は、今度また勤務日に試してみます。
win8なので、スクリプトのフォント指定を変えたりもしてみます。
入ったばかりの職場で孤軍奮闘しておりますので、とても頼りにしています。
ありがとうございます。


133  Re:[132] 面積スタンプ    与太郎     2017/08/21(Mon) 16:35返信

うーん、困った。
不具合が再現出来ないのです。
こちらはMacのデモ版ですけど、英語フォントにしても「坪」は表示されてしまいます。
とりあえず、「坪」を別の文字に変えて様子を見るくらいしか思いつきません。
あと、このスクリプトでは縮尺によって表示される数値が変わるとは思えないので、そこも疑問です。


132  Re:[131] 面積スタンプ    karen     2017/08/21(Mon) 12:32返信

> karenさん、こんにちは。

与太郎さん、こんにちは。貴重なお返事ありがとうございます。
管理人さん、ご対応ありがとうございます。

> 面積スタンプのスクリプトは複数あるので、何年何月のものか教えてもらえたら助かります。
> あと、VWのバージョンも。

VW2014fundamentalsです。スペースツールが使えないのです。
早くArchitectになるよう願っております。
おかげさまでこういった楽しみも味わえているわけですが。

縮尺を1/50にしたらちゃんと数字が表示されました!!!
坪はscriptパレットで文字化けはしていませんが、やはりφになってしまいます。
データパレットでフォントを変えると・とか?になりました。

他にも面積スタンプがあるのですね。
いろいろ探ってみようと思います。

使用させていただいたのは、以下のscriptです。
お返事いただけると幸いです。


面積スタンプ 坪数表示付き   T.Yabe
Sat Dec 9 2:11:37 2006


131  Re:[129] 面積スタンプ    与太郎     2017/08/19(Sat) 17:41返信

karenさん、こんにちは。
面積スタンプのスクリプトは複数あるので、何年何月のものか教えてもらえたら助かります。
あと、VWのバージョンも。
面積ゼロの件は、ファイルの単位設定との絡みかも知れません。
例えばスクリプトがミリ単位を前提としていたら、メートル単位のファイルでは百万分の一の数値になってしまいます。
「坪」の文字化けは、コピペ時に文字コードの違いで起ることがあります。
スクリプト・エディタで開いたときに該当箇所が文字化けしていませんか?


130  Re:[129] 面積スタンプ    管理人     2017/08/17(Thu) 17:51返信

karenさん、当クラブにはVectorScriptの達人が何人もいます。
ただ、バックナンバーでお察しの通り、
このところkarenさんのようなチャレンジャーが希になり、達人たちの巡回のペースが遠のいています。
また、すでに仙人の域に入った達人も多いので、俗世からの質問に応えてくれるかどうか…。
一身独立、または、気長〜にお待ちください。


129  面積スタンプ    karen     2017/08/17(Thu) 17:07返信

こんにちは。
歴3ヶ月のVW、VS超初心者です。
バックナンバーの面積スタンプを使用させていただきました。
のですが、0uで出てしまいます。
坪も出るなんて凄い!でも単位がφになってます。^^;

指定図形の面積を表示させたいのですが、、できたらとってもうれしいです。
サポートは受けていないので、お教えいただけると幸いです。
VS判るようになりたいです。


128  Re:[126] 3D図形の削り取り    あお子     2017/03/30(Thu) 16:45返信

>A級初心者さん

ご回答ありがとうございます。
検索ワードのやり方もあるんですね。
次はハンドル取得で検索かけてみます。
URLまでありがとうございます。

>与太郎さん

ご回答ありがとうございます。
2007年のバックナンバーは見てみたのですが、いまいち理解に苦しんでいました。
説明頂いたのを試してみます。
ありがとうございます。


127  Re:[125] 3D図形の削り取り    与太郎     2017/03/27(Mon) 12:43返信

図形のハンドルを得る方法はたくさんありますが、
グループの内外やレイヤを特定しないで使えるのは以下の三つでしょうか。
1. GetPtとPickObjectを使えばマウスでクリックした位置の図形のハンドルを得られます。
2. ForEachObjectInLayerを使えば選択している複数の図形のハンドルを得られます。
3. 同じスクリプトの中で生成した図形ならLNewObjで得られます。

ForEachObjectInLayerの使い方は2007年以降のバックナンバーが参考になるでしょう。
LNewObjで注意すべきは、2個目以降の図形の生成に失敗した場合にNILでなく、
その前に生成した図形のハンドルがそのまま返って来ることです。
まあ、最後に生成された図形という意味では正しいのですが。
あと、VWでは先に描いた図形が背面側(下側、後ろ側、奥側)で後に描く図形が前面側(上側、手前側)になりますが、
図形リンクをたどるときも最初の図形は一番最初に描いた(一番奥側にある)図形で、最後の図形は一番手前にある図形です。
ハンドル関係のサブルーチン名の接頭文字「F」と「L」はFirstとLast、つまり最初と最後の意味であり、マニュアルの直訳「最上位」と「最下位」は適切な訳ではありません。
「最上位」の図形とは一番最初に描いた一番下(背後)にある図形のことなのです。


126  Re:[125] 3D図形の削り取り    A級初心者     2017/03/25(Sat) 17:17返信

リファレンスの AddSolid の項に出ているサンプルが参考になると思います。

ハンドルの取得方法については、「VectorScript ハンドル取得」で探すと
いろいろ見つかりますが「VS手習い帖」のが分かりやすいと思います。

上記、的外れな答えかもしれませんが。

http://www.aanda.co.jp/develop/VSBook/vsb1-4.html


125  Re:[124] 3D図形の削り取り    あお子     2017/03/23(Thu) 10:21返信

totoro様

ご回答ありがとうございます。
SubtractSolidを使用する場合、
くり抜く図形とくり抜かれる図形をどう指示していけばよろしいでしょうか。

質問ばかりですみません。。
宜しくお願い致します。


124  Re:[123] 3D図形の削り取り    totoro     2017/03/21(Tue) 12:29返信

Function的には
SubtractSolid
かな?


123  3D図形の削り取り    あお子     2017/03/21(Tue) 11:53返信

お世話になります。
VS初心者です。


3D図形に複数の図形で削り取る方法が分かりません。
v2015を使用しています。

もしご存知であれば教えて頂けると幸いです。
宜しくお願い致します。


122  Re:[121] プラグインオブジェクトのバージョンの件    totoro     2017/03/01(Wed) 23:54返信

文字化けひどいのでもう一回

一般には
(1).vsoファイルをPlug-inフォルダにファイルをコピー
(2)一旦Vectorworksを再起動<<ここ重要
(3)[作業画面]ダイアロクの[ツール]タブ>[ツール]項目内「その他」にあるはず

[ツール]メニュー[オプション][環境設定...]>[ユーザフォルダ]タブの設定が
デフォルトから変更されていると、[ユーザフォルダ]下のPlug-inフォルダが
.vsoファイルの格納場所になってます。


121  Re:[119] プラグインオブジェクトのバージョンの件    totoro     2017/03/01(Wed) 23:49返信

一般には
(1).vsoファイルをPlug-inフォルダにファイルをコピー
(2)一旦Vectorworksを再起動<<ここ重要
(3)[作業画面]タ&#12441;イアロク&#12441;[ツール]タフ&#12441;>[ツール]項目内「その他」にあるはず

[ツール]メニュー[オフ&#12442;ション][環境設定...]>[ユーサ&#12441;フォルタ&#12441;]タフ&#12441;の設定が
デフォルトから変更されていると、[ユーサ&#12441;フォルタ&#12441;]下のPlug-inフォルダが
格納場所になってます。


120  RE:プラグインオブジェクトのバージョンの件    masafumi     2017/03/01(Wed) 18:01返信

こんばんはタニさん。masafumi といいます。

VectorWorks 12.5 上でプラグインツールを新規作成します(ファイルのみ作成し、中身は無しでもよいです)。
新規作成したファイルをエクスプローラで検索し、表示された場所にVW2012で作成したプラグインオブジェクトツールをコピーして見てください。
以前これで上手くいった様な気がします。


119  プラグインオブジェクトのバージョンの件    タニ     2017/03/01(Wed) 08:19返信

お世話になります。
VS初心者です。

VW2012で作成したプラグインオブジェクトツールを
VW12.5で使用したいのですが、Plug-inフォルダにファイルをコピーしても
作業画面設定のツールに表示されませんでした。

何か簡易的に対処できる方法はありますでしょうか。
よろしくお願いいたします。


118  Re:[116] ハンドルで指定したオブジェクトの検索条件    タニ     2016/11/25(Fri) 14:15返信

お世話になります。

質疑の件、ワークシート関数の「=XCOORDINATE」や「=YCOORDINATE」で検出した点と
VSの「XCoordinate(c:CRITERIA))」や「YCoordinate(c:CRITERIA))」で検出した点が
一致したため、こちらの方法で検討してみます。

今後もよろしくお願いいたします。


117  Re:[115] VSによるワークシートの取り出し    タニ     2016/11/25(Fri) 14:09返信

お世話になります。

質疑の件、参考になりそうなプログラムがアップされていました。

http://www.aanda.co.jp/develop/program/wsexport.html

もう少し勉強してみます。


116  Re:[114] ハンドルで指定したオブジェクトの検索条件    タニ     2016/11/24(Thu) 19:22返信

でる 様

ご回答ありがとうございます。
返答が遅くなり申し訳ございません。

英語が苦手なため理解力に乏しいですが、
座標が2種類あるということでしょうか。

具体的な解決方法をご提示頂けると非常に助かります。
お手数ですがよろしくお願いいたします。


115  VSによるワークシートの取り出し    タニ     2016/11/24(Thu) 19:18返信

お世話になります。
VS初心者です。

VSで作業中のファイルからワークシートをカンマ区切りのテキストデータで取り出したいと思っています。

取り出しが可能な場合、どのようにすればよいかご指導頂けないでしょうか。

よろしくお願いいたします。


114  Re:[113] ハンドルで指定したオブジェクトの検索条件    でる     2016/10/24(Mon) 10:52返信

下記が関係しませんか?

http://developer.vectorworks.net/index.php/VS:GetSymLoc

"You can use this function to retrieve the position of a PlugIn Object, from within the PlugIn Object itself. However, it will only display its position relative to the internal origin. Gerard Jonkers, 2007/01/08: See also my Absolute_Origin article about origins on the VectorLab. "

http://www.vectorlab.info/index.php?title=Absolute_Origin


113  Re:[112] ハンドルで指定したオブジェクトの検索条件    タニ     2016/10/18(Tue) 20:40返信

お世話になります。
VS初心者です。

下記の件、どなたか解決方法をご指導頂けないでしょうか。
よろしくお願いいたします。

> 図面上に複数存在するPIOの挿入点に関してですが、
> ワークシート関数の「=XCOORDINATE」や「=YCOORDINATE」で検出した点と
> VSの「GetSymLoc(symHd,pX,pY);」で検出した点が異なっていました。
> VSでワークシート関数の「=XCOORDINATE」や「=YCOORDINATE」と同じ点を検出するには
> どのような方法がありますでしょうか。
>
> お手数をお掛けいたしますが、
> よろしくお願いいたします。


112  Re:[111] ハンドルで指定したオブジェクトの検索条件    タニ     2016/07/19(Tue) 16:03返信

与太郎 様

ご回答ありがとうございます。
返答が遅くなり申し訳ございません。

改めて質問で恐縮です。

図面上に複数存在するPIOの挿入点に関してですが、
ワークシート関数の「=XCOORDINATE」や「=YCOORDINATE」で検出した点と
VSの「GetSymLoc(symHd,pX,pY);」で検出した点が異なっていました。
VSでワークシート関数の「=XCOORDINATE」や「=YCOORDINATE」と同じ点を検出するには
どのような方法がありますでしょうか。

お手数をお掛けいたしますが、
よろしくお願いいたします。


111  Re:[109] ハンドルで指定したオブジェクトの検索条件    与太郎     2016/07/06(Wed) 18:25返信

タニ様へ

ハンドルの値で直接検索することは出来ませんが、
対象図形のハンドルをhとすれば、
DSelectAll;
SetSelect(h);
if Count((LOC='領域図形の名前') & (SEL=TRUE)) <> 1 then 〜
で図形が領域外かどうかを判定出来ます。

また、一時的に図形に名前を付けて、
SetName(h, '仮名');
if Count((LOC='領域図形の名前') & (N='仮名')) <> 1 then 〜
でも判定出来ます。
名前の重複は許されないので、必ず直後に SetName(h, ''); で名前を消してください。

領域で図形を検索するときの判定条件は、図形の一部でも全体でもなく、
図形の中心が領域内にあるか否かですが、
これはPtInRectやPtInPolyによる判定に置き換えることが出来ます。
xC, xYを対象図形の中心座標とすれば、
if not PtInPoly(xC, yC, GetObject('領域図形の名前')) then 〜
で判定出来ます。

座標による選択は、その座標を含んだ極小な領域で選択後、
個々の座標をチェックして除外すれば良いのではないでしょうか。
最終的に座標チェックは必要なわけですが、PIOの総数が数百程度なら
最初から全部を座標チェクしてもあまり時間はかからないと思います。


110  Re:[109] ハンドルで指定したオブジェクトの検索条件【追記】    タニ     2016/07/06(Wed) 16:55返信

別件で追記です。

挿入点が指定の座標に合致するPIOを選択したいと思っています。

「SelectObj((T=PLUGINOBJECT)&(挿入点の検索条件));」的な感じで出来ますでしょうか。
挿入点の検索条件は設定できないのでしょうか。

下記と合わせて、よろしくお願いいたします。

> お世話になります。
> VS初心者です。
>
> 複数のオブジェクトを1つずつハンドル接続した際に、
> それぞれが指定の範囲外にあるかどうかを検索する方法で困っています。
>
> IFステートメントの制御式に「LOC<>'指定範囲'」を用いればよいのかと思いますが、
> ハンドルと関連付ける方法がよく分かりません。
>
> よろしくお願いいたします。


109  ハンドルで指定したオブジェクトの検索条件    タニ     2016/07/05(Tue) 10:01返信

お世話になります。
VS初心者です。

複数のオブジェクトを1つずつハンドル接続した際に、
それぞれが指定の範囲外にあるかどうかを検索する方法で困っています。

IFステートメントの制御式に「LOC<>'指定範囲'」を用いればよいのかと思いますが、
ハンドルと関連付ける方法がよく分かりません。

よろしくお願いいたします。


108  Re:[107] シングルクォーテーションを文字列として結合する方法    タニ     2016/04/14(Thu) 20:37返信

hilfiger様

ご返答ありがとうございます。

「(')を入れる場合、('')と入力する。なので、(')という文字列は('''')になる。」

非常に分かりやすく説明いただき、理解が出来ました。
プログラム言語に詳しくない私にとって、
皆さんからのご返答が非常に勉強になります。

今後もよろしくお願いいたします。


107  Re:[106] シングルクォーテーションを文字列として結合する方法    hilfiger     2016/04/12(Tue) 19:59返信

お役に立てて何よりです。

というかそもそも
『シングルクォーテーションを文字列として結合する方法』
っていうタイトルを見逃して答えるという失態(反省)。

通常文字列は'文字列'と書く。
(')を入れる場合、('')と入力する。
なので、(')という文字列は('''')になる。

という解説を最初からしておけばスマートだった・・・。


('=''',900,'''')の場合、
'が8個。
1つ目が開始、=がきて、23番目''が文字列としての(')、4つめで閉じる。
,900,を挟んで
5つ目が開始、67番目''が文字列としての(')、8つめで閉じる。
ですね。


106  Re:[105] シングルクォーテーションを文字列として結合する方法    タニ     2016/04/12(Tue) 19:51返信

hilfiger様

ご返答ありがとうございます。

教えて頂いた方法で対応することが出来ました。

ちなみに「'」を文字列に含める場合の表記ルールが分かれば教えて頂けないでしょうか。
「Concat('=''',900,'''')」はどの「'」がどのような役割になっているのか
私には理解できませんでした。

お手数をお掛けいたしますが、
よろしくお願いいたします。


105  Re:[104] シングルクォーテーションを文字列として結合する方法    hilfiger     2016/04/12(Tue) 19:03返信

やはり外してましたね。

もう一度確認してみたのですが、
「Concat('='',900,''')」
だと、
「=',900,'」という文字列になる気がします。

「Concat('=''',900,'''')」
かな?と。


104  Re:[103] シングルクォーテーションを文字列として結合する方法    タニ     2016/04/12(Tue) 18:29返信

hilfiger様

早速のご返答ありがとうございます。
説明不足だったため、補足説明をさせて頂きます。

ワークシートに明記している値と図面上のプラグインオブジェクトのレコード値が合致した場合に、
プラグインオブジェクトの数量をカウントしたいと思っています。

「=COUNT()」の検索条件に、値の入ったセルを明記しても上手く処理されません。
Vectorworks2012を使用していますが、恐らく下記リンクのNo.1010の現象かと思います。

http://www.aanda.co.jp/Support/faq-vw2011.html

ワークシートにはすでに複数行の値を入力済みのため、
VSを利用して例えば「900」を「='900'」に打ち変えたいと思っています。
セルの見た目は「900」で問題ありません。

ご返答頂いた「SetWSCellNumberFormat」を私も少し調べてみます。
引続きよろしくお願いいたします。


103  Re:[102] シングルクォーテーションを文字列として結合する方法    hilfiger     2016/04/12(Tue) 17:55返信

質問しかしたことないのですが・・・。

見当はずれかもしれませんが、
単純に手入力で【='900'】と打っても、
セルの設定の数字 が文字になっていないと【900】となることを考えると、

SetWSCellNumberFormat
が解決に役立つかも、と思いました。


Page: | 1 | 2 | 3 |
記事No 削除キー

- LightBoard -