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

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

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

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
が解決に役立つかも、と思いました。


102  シングルクォーテーションを文字列として結合する方法    タニ     2016/04/12(Tue) 15:31返信

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

ワークシートのセルに入力されている数値を文字列に変換したいと思っております。
例えば、「900」と入力されているセルを「='900'」へ変換したいのですが、
VSを「Concat('='',900,''')」と明記しても上手くいきません。

恐らく、シングルクォーテーションの明記が間違っているのかと思いますが、
よく分かりません。

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


99  Re:[98] ワークシートの検索条件    totoro     2016/04/11(Mon) 16:42返信

そういう意味でしたか...

まず、「シンボル名」はユニークな図形の「名前」」(データパレットのレコードの
トップに記入する名前)ではありません。図中においたシンボルの一つ一つに固有の
「名前」を付けることができます。
「LOC='****'」はこの「名前」に反応するので、「シンボル名」では反応しません。

では配置したシンボルにつけた「名前」でご所望の操作ができるかというと
残念ながらできないと思います。シンボルそのものは配置位置情報しか持たないので
そこに「面積=範囲がある」とは認識されないはずです。ですから図形としての
範囲を持っていない扱いになるので、範囲内の図形はカウントできないと思います。

逆に、範囲内の図形としてカウントされることはできるはずです。範囲内に
シンボルの基準点が含まれていればカウントの対象になるはずです。

問題の解決にはならないでしょうが、ここら辺をヒントに別な方法を考えられては
いかがかと思います。


98  Re:[97] ワークシートの検索条件    タニ     2016/04/11(Mon) 10:34返信

totoro様

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

ご返答頂いた数式ですと、「用紙範囲」と名前をつけたシンボルの数量を
カウントすることになります。

用紙範囲内にレイアウトされている図形の数量をカウントしたいと思っており、
「Vectorworks 2012 Help」の中の「 Home / VectorScript Language Guide / 検索条件 / 検索条件の表」を確認すると
「LOC」で「名前を付けられた図形の境界内に位置する図形」という検索条件が明記されていました。

説明不足で分かりにくく申し訳ございません。
よろしくお願いいたします。


97  Re:[96] ワークシートの検索条件    totoro     2016/04/08(Fri) 10:47返信

> 名称「用紙範囲」でシンボル登録し、

なら

=COUNT(S='用紙範囲')

じゃないかな?


96  ワークシートの検索条件    タニ     2016/04/08(Fri) 10:24返信

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

ワークシートで用紙範囲内の図形の数を集計したいと思っています。
用紙と同サイズの長方形を名称「用紙範囲」でシンボル登録し、
セルの数式を下記のように明記しましたが集計されず「0」と表示されます。

=COUNT(LOC='用紙範囲')

検索条件の使い方が間違っているのでしょうか。

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


95  Re:[94] 共有リソースのワークシート取り込み    タニ     2016/03/15(Tue) 16:43返信

共有リソースのワークシート取り込みの件、
自己解決しましたので投稿いたします。

下記のVSを利用して解決しました。


listID:=BuildResourceList(18,13,'Favorites',numItems);
WS:=ImportResourceToCurrentFile(listID,1);

・「18」:ワークシートの種類番号
・「13」:「Libraries」フォルダの番号

共有リソースのショートカットが保存される「Favorites」フォルダは
下記の場所に隠しフォルダとして存在しました。

(Windows版 Vectorworks2012の場合)
C:\Users\UserName\AppData\Roaming\Nemetschek\Vectorworks\2012\Libraries\Favorites

ただし、この方法では共有リソースのショートカットからワークシートが読み込まれなかったため、
「Favorites」フォルダ内のショートカットを.vwxデータに入替えて取り込むことが出来ました。

正しい解決方法かどうか分かりませんが、
WEB検索を駆使して何とかたどり着きました。

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


94  共有リソースのワークシート取り込み    タニ     2016/03/11(Fri) 14:57返信

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

毎回質問ばかりで申し訳ないですが、
私の力ではどうにも解決できないため投稿させて頂きます。

あらかじめ共有リソースに登録してあるファイルのワークシートを
VSで取り込むことは可能でしょうか。
これが出来ると作業効率が改善し、図面作成時のミスが減るのですが。。。

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


92  Re:[91] 寸法線のクラス設定変更    管理人     2016/03/10(Thu) 17:05返信

> 私のVectorScript力はいっこうに向上しないので、しばらく黙りますね。>管理人さん

いえいえ、黙らないで下さい。
できれば、お時間のあるときに、VectorScript関連のひとり言をつぶやいて頂ければ感謝です。

あっちこっち飛び回る、統一テーマ無しの思い付きで結構です。
VectorScriptの例文でも、一つのコマンドの意味でも、プログラムの作法でも、何でもありで。

スクロールしないサイズなら、管理人のような入門希望者でも、読めると思います。
あ、もちろん、今すぐでなくても、気が向いたときに、来週でも、半年後でも、隔月でも。

カウンターによると、Script談話室のROMさんは少なくありません。
興味や大切さを理解されていても、書き込むのは難しいですから。


90  Re:[89] 寸法線のクラス設定変更    タニ     2016/03/10(Thu) 12:10返信

A級初心者 様

早速のご返答ありがとうございます。
教えて頂いた方法で対応できました。

推論のご指摘、しっかりと肝に銘じます。

その他、以前お名前を間違えて明記してしまっていました。
申し訳ございませんでした。

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


89  Re:[88] 寸法線のクラス設定変更    A級初初心者     2016/03/09(Wed) 18:25返信

どこを探せば方法が見つかるかを推測することから始めます。

デフォルトでは寸法は寸法クラスに入ってしまいます。
目的を達成するためには、このデフォルト設定を覆す必要があるので、
そういう設定が可能かどうかを調べる必要が生じます。

そこで、マニュアルで「寸法クラス」を検索すると、「ファイル>書類設定>
寸法>寸法を寸法クラスに作成する」という設定があることが分かります。

次はVectorScriptです。

VectorScript Function Referenceのどの部分にどのような内容があるかは、
VectorScriptをやる以上は当然把握しておくべきことなので、直ちに、
各種設定を司る内容が記されているAppendix F - Preference Selectors が
思い浮かびます。

そうすると、"Create Dimensions in Dimension Class" という項目があります。

ということは、SetPrefでできそうだということが分かりました。

色数のこともそうですが、こういう推論はプログラムの基本知識とは関係ないですよ。


88  寸法線のクラス設定変更    タニ     2016/03/09(Wed) 14:24返信

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

VSで下記を使用して寸法線を作成しようと思うのですが、
寸法線のクラス設定の変更方法がよく分かりません。

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

NameClass(className : STRING);でクラスを指定した後に
LinearDimを明記しても通常通りの「寸法」クラスで設定されてしまいます。

初歩的な内容かもしれませんが、よろしくお願いいたします。


87  Re:[86] ハッチングの面の色番号について    タニ     2016/03/09(Wed) 14:16返信

A級初心者様

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

私の知識に8ビットの色数と16ビットの色数の認識がありませんでした。
VSを見よう見まねで作成すると、プログラムの基本知識が無い私にはつまづく点が多々あり
勉強になります。

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


86  Re:[85] ハッチングの面の色番号について    A級初初心者     2016/03/09(Wed) 00:36返信

自己レスで失礼。

> VectorScript Reference "RGB values are in the range of 0~65535. "

日本語マニュアルにも書いてありましたよ。
「値の範囲は0から65535までです。」

ところで、230だと真っ黒、59110だと薄いグレーになることから、
8ビットカラーでないことは容易に想像できると思います。
だから前の書き込みのような計算をして確認してみた次第ですが、
VectorScriptと関係ないところでも、カラーパレットにはどう見ても
8ビットでは表現できない色が並んでます、、。(^_^;)


85  Re:[84] ハッチングの面の色番号について    A級初初心者     2016/03/09(Wed) 00:29返信

VectorScript Reference "RGB values are in the range of 0~65535. "

0〜65535までの整数の数 = 65536 = 16ビットの色数
一方、8ビットの色数=256

230 ÷ 65536 = 0.003509521484375 ≒ 0
65536 ×(230/256)= 58880 ≒ 59110
(59110/65536) × 256 = 230.8984375 ≒ 230

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


84  Re:[83] ハッチングの面の色番号について    タニ     2016/03/08(Tue) 18:34返信

お世話になります。

ハッチングの面の色番号の件、さらに色々試してみたところ
下記の方法で解決しました。

■解決方法
RGBToColorIndex(59110,59110,59110,color);
BeginVectorFillN(hatchName,FALSE,FALSE,color);

■ダメだった方法1
BeginVectorFillN(hatchName,FALSE,FALSE,1236);

■ダメだった方法2
RGBToColorIndex(230,230,230,color);
BeginVectorFillN(hatchName,FALSE,FALSE,color);

何故だか分かりませんが、「RGBToColorIndex(59110,59110,59110,color);」と
「RGBToColorIndex(230,230,230,color);」で取得したcolorIndexはおなじ「1236」のようです。

やりたいことは出来たのですが、なぜこのような事が起こるのか理由が知りたいです。
よろしくお願いいたします。


83  Re:[82] ハッチングの面の色番号について    タニ     2016/03/08(Tue) 17:10返信

お世話になります。

ハッチングの面の色の件、面の色を無しにする方法は下記で自己解決しました。

objectHandle:= GetObject(hatchName);
SetObjectVariableBoolean(objectHandle, 661, TRUE);

アクティブファイルのカラーリストに無い色の設定方法の件のみ
教えていただけると助かります。

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


82  ハッチングの面の色番号について    タニ     2016/03/08(Tue) 16:24返信

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

VSにてハッチングを指定したいと思っているのですが、
下記で面の色番号(1236:グレー)を指定しても黒くなってしまいます。

BeginVectorFillN(hatchName,FALSE,FALSE,1236);


アクティブファイルのカラーリストに無い場合でも「RGBToColorIndex(230,230,230,color);」で確認すると
色番号:1236と出ますが、指定不可でしょうか。

その他、面の色を無しにすることは可能でしょうか。


いろいろ試してみましたが、理解できませんでした。
よろしくお願いいたします。


81  Re:[80] プラグインオブジェクトを常に指定のレイヤへ描画したい    A級初初心者     2016/02/24(Wed) 21:05返信

タニさん、ご説明ありがとうございました。

レイヤ(デザインレイヤ)固定の主たる意義はヒューマンエラー対策であると
理解しましたが、それでよかったでしょうか。

そして目的の処理は、特定のPIOすべてにレコード値を紐付けることだと思います。
不特定多数の人が、不特定多数のレイヤを作りながら作業している場合は、
いろいろな困難が伴って大変ですね。

またVectorWorksのデザインレイヤとクラスのコンセプトからは、
レイヤ固定という考え方はVectorWorksに馴染まないような気がします。

とすれば、レイヤを固定するのではなく、(ネガティブではあるけれど)レイヤの
構成が各人各様であることを前提として、レイヤを順次切り替えながら各レイヤごとに
処理する方がやりやすいのではないかと思います。

私のVectorScript能力はゼロに近いので、具体的なスクリプトをご呈示できなくて
申し訳ありません。うまくできたら、ここでで紹介していただけるとありがたいです。


80  Re:[79] プラグインオブジェクトを常に指定のレイヤへ描画したい    タニ     2016/02/23(Tue) 11:45返信

A級初初心者 様

質疑頂いた件、ご返答が遅くなり申し訳ございません。

プラグインメニューで下記のような処理を検討中です。
指定したレイヤにPIOが入っていないと正確に処理されません。


SelectObj(検索条件); {検索条件に合致したPIOを選択}
obj:=FSObject(layerName);  {ハンドルで指定したレイヤ上で選択されている最上位の図形のハンドル}

WHILE (obj <> NIL) DO
BEGIN
SetRField(obj,'レコード名','レコードフィールド名',値);  {ハンドルで指定した図形に連結しているレコードフィールドに値を設定}
obj:=NextSObj(obj);
END;

条件としては、不特定多数の方が使用する予定のため、
各自が自由に作成したレイヤに入らないようにしたいと思っています。

尚、レイヤに関係なく同じような処理が可能であれば、
PIOを指定のレイヤに入れる必要はないと思っています。

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


78  プラグインオブジェクトを常に指定のレイヤへ描画したい    タニ     2016/02/10(Wed) 10:11返信

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

VSを利用してプラグインオブジェクト(PIO)を作成しています。

作成したPIOを貼り付けたり、複製したりした際に
常に指定したレイヤのみに描画したいと思っています。

Layer(name:STRING);でレイヤを指定した場合、
PIOをツールから図面へ最初に貼り付けた際は指定のレイヤに描画されます。

しかし、貼り付けたPIOをデータパレットで他のレイヤに移してしまうと、
その後はコピペすると他のレイヤのままになってしまいます。

指定のレイヤのみに描画するVSの組み方を教えて頂けないでしょうか。

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


72  ブラグインメニュー実行中のアラート表示    タニ     2016/01/19(Tue) 16:52返信

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

VSでプラグインメニューを作成し、実行すると処理に10秒程度時間がかかります。
処理中の画面に「計算中・・・」のようなアラートを表示し、
処理が問題なく終わると「処理が完了しました。」のようなアラートに切り替わるVSを組むことは可能でしょうか。

何となく、下記あたりを使用して出来そうに思っていますが、
アラートの切り替え方がよく分かりません。

・PROCEDURE AlrtDialog ( message:STRING ) ;
・PROCEDURE Message ( z :ANY ) ;

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


71  Re:[70] forward    msg     2015/11/30(Mon) 18:46返信

これで最後にしますが、予約語が将来的に手続き・関数として使われる可能性はないでしょう
Pascal言語について調べてみますと、forward宣言というものがあるようです
将来的にVectorScriptで、forward宣言が利用可能になることはあるのかもしれません
できると便利です

現在のFunction Referenceのforwardに関する表記は誤りといっていいものだと考えます
速やかに訂正されるべきでしょう


69  Re:[68] forward    msg     2015/11/29(Sun) 19:56返信

与太郎さん、「DoMenuTextByName」一案だとは思いますが次善の策だと思っています
スクリプト自体は完成していて動作も問題ないのですが、「Forward」の扱いに疑問があるのです

隠居さん、確かにマニュアルにある「将来使用する可能性があるために予約されている予約語」一覧に「FORWARD」がありました
となると、なんで「Function Reference」に載せてあるのか?ですよね

既知の障害くさいのでサポートに聞ければ良いのですが、私のバージョンはすでにサポート切れしてますので・・・

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


68  Re:[67] forward    与太郎     2015/11/29(Sun) 00:36返信

Forward; が使えないなら、DoMenuTextByName('Send Forward'); でメニュー・コマンドを実行したら上手くいきませんか?


67  Re:[66] forward    隠居     2015/11/28(Sat) 23:18返信

「VectorScript reserved for possible future use」で検索したところ、
下記のURLのドキュメントのp.8に下記の説明がありましたよ。
(msgさんが挙げているHPで、"VectorScript language guide"で検索すれば
 ヒットします。)

The following table lists reserved words which have no current meaning to the VectorScript compiler, but have been reserved for possible use in the future. You should also avoid using them in your scripts, as they may cause problems
with future versions of the language.

で、ふと思って、探したら、VectorWorks 2008は、VWHelp > VS Language Guide の
中にばっちり書いてありました。

「次の表は、VectorScript コンパイラでは今のところ意味を持ちませんが、
将来使用する可能性があるために予約されている予約語です。これらの単語を
使用することは避けてください。使用すると、言語の将来のバージョンで
問題が発生することがあります。」

要するに上の英文の翻訳です。

http://developer.vectorworks.net/images/7/72/VectorScriptGuide.pdf


66  Re:[65] forward    msg     2015/11/28(Sat) 17:06返信

そうなのですが、コンパイルすると「 Error: Word reserved for possible future use. 」
がでます
私の環境だけなのか、不思議に思っているのです
「HMoveForward」が併記されているので、実際にはこっちしか使えないのかとも考えています
「Backward」にはないですし
何か情報があればお願いします

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


65  Re:[64] forward    隠居     2015/11/28(Sat) 10:53返信

お書きになったHPに、

"Availability: from All Versions"

と書いてあるから、全バージョン対応でしょう。


64  forward    msg     2015/11/27(Fri) 21:39返信

突然の質問ですみません
forward(選択されている図形の前後関係を、ひとつ前に移動する)スクリプトが正常に働きません
バージョンによるのでしょうか?

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


63  Re:[62] プラグインオブジェクトのハンドル    タニ     2015/11/18(Wed) 17:19返信

与太郎 様

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

思い描いていた方法だと難しそうですね。
他の方法を検討してみます。

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


62  Re:[61] プラグインオブジェクトのハンドル    与太郎     2015/11/15(Sun) 10:31返信

ハンドルの実体はメモリ・アドレス、つまり32bit整数です。(64bit化でどうなるのか?)
そしてConcat(ハンドル)で文字列化できます。もちろん整数化も可能です。
でも、VectorScriptはPascal準拠なだけに変数の型違いに厳しいので、
ハンドル型変数に文字や整数を代入することは出来ません。
またファイルに保存して開いたときに同じアドレスになる保証はありません。
図形にユニークな名前を付けてGetObject(名前)で参照するのが現実的かと思います。


61  プラグインオブジェクトのハンドル    タニ     2015/11/13(Fri) 16:06返信

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

プラグインオブジェクト(PIO)のハンドルを文字列に変換することは可能でしょうか。

やりたいことのイメージは下記の通りです。

図面上に2種類(「A」と「B」)のPIOがそれぞれ複数あったとします。

任意「A'」のハンドルをデータパレットに表示させ、
任意「B'」のデータパレットに「A'」のハンドルを文字列で入力することにより、
「A'」のパラメータが変更されると「B'」のパラメータも連動して変更されるようにしたい。

仕組み的に無理があるでしょうか。
よろしくお願いいたします。


59  Re:[58] 1点型オブジェクトでのSelectObj    タニ     2015/10/13(Tue) 22:15返信

与太郎 様

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

非常に分かりやすく、教えて頂いたとおりに修正して
イメージしていた機能を実行することができました。


話しは変わりますが、私はVectorScript初心者のため、
付属していた「VectorScript Reference」やWEBで検索して知識を得ているのですが、
何か参考書籍的なものはありますでしょうか。

以前どこかで「VectorScriptはPascal言語を元に・・・」といった内容を呼んだ記憶があり、
Pascal言語をまず勉強したほうが良いでしょうか?

「やりたいことをVectorScriptで実行するにはどうしたらよいか?」の繰り返しで覚えてしまっているので、
ちゃんと勉強したほうが良いかなと思っています。

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


58  Re:[57] 1点型オブジェクトでのSelectObj    与太郎     2015/10/09(Fri) 17:34返信

タニさん、下のような感じになると思います。

procedure test; { プラグインオブジェクトの中から特定のレコードを持つ図形にアクセスする }
{$ DEBUG}
const
SQ = '''';
RecName = '';
FldName1 = '';{ 検索フィールド }
FldName2 = '';{ 読み書きフィールド }
FldData1 = '';{ 検索値 }
var
criteria :string;
hObj :handle;{ PIO自身のハンドル }
n :integer;
fldData2 :string;

procedure DoObject(h:handle); { 最初の図形のレコードを参照する例 }
var
s :string;
begin
s:= GetRField(h, RecName, FldName1);
if (s = FldData1) & (n = 0) then begin
n:= n + 1;
fldData2:= GetRField(h, RecName, FldName2);
end;
end;{DoObject}

begin{main}
{ ここでプラグイン情報の取得 }
Rect(-10, 10, 10, -10);
begin { このブロックは最初の一回だけ実行 }
n:= 0;
criteria:= Concatp('R IN[', SQ, RecName, SQ, ']');
ForEachObject(DoObject, criteria);
{ ここでレコードを作成 }
SetRField(hObj, RecName, FldName2, fldData2);
end;
end;
Run(test);

レコードの付加や読み書きはPIO生成時にしか実行させたくないので、
スクリプトがそのPIOに対して最初の実行か二回目以降の実行かを判断する必要があると思います。
スクリプトはPIOのパラメーターを変えたり、(オプションで)移動や回転をする度に実行されます。
res.53でPIO描画ツールを別に作ると書いたのは、そうすればPIOに余計な機能を持たさずに済むからです。


57  Re:[56] 1点型オブジェクトでのSelectObj    タニ     2015/10/08(Thu) 21:34返信

与太郎 様

お世話になります。
早速のご返答ありがとうございます。

ご返答いただいた内容が非常に分かりやすく、
やりたいことが概ねできました。

1点だけ教えてください。

検索条件がレコード名のみとなっていますが、
レコードフィールド値も検索条件に含めれないでしょうか。

図面上に複数の図形が存在し、同じレコード名のレコードが連結されています。
同じレコード名に含まれるレコードフィールド値を検索条件にしたいと思っています。

教えて頂いた方法でやってみると、レコード名のみが検索条件となってしまい、
得られる図形のハンドルは常に同じものになってしまいました。

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


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

- LightBoard -