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

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

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

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を指定のレイヤに入れる必要はないと思っています。

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


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

回答ではありません。

レイヤが固定されるような機能の必要性が分からないので、
どのようなシーンで役立つのかご教示いただければありがたいです。


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

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

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

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

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

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

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

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


77  Re:[76] ブラグインメニュー実行中のアラート表示    A級初心者     2016/01/29(Fri) 22:11返信

リロードしてなかったみたいで、私のレスのタイミングがおかしかったですね、失礼。


76  Re:[74] ブラグインメニュー実行中のアラート表示    A級初心者     2016/01/29(Fri) 17:16返信

「処理中」は、MessageとClrMessageでメイン処理を挟みます。
「処理完了」は、Message→Wait→ClrMessageか、AlrtDialog単独のどちらかで。

あまりにも初歩的なやり方で申し訳ないですが、初心者の限界ということでご容赦を。


75  Re:[74] ブラグインメニュー実行中のアラート表示    タニ     2016/01/29(Fri) 16:36返信

A級初心者 様

お世話になります。

メッセージウィンドウでのアラート表示の件、

・PROCEDURE Message ( z :ANY ) ;
・PROCEDURE ClrMessage ;

上記を使って出来そうですね。
勉強不足で申し訳ございません。

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


74  Re:[73] ブラグインメニュー実行中のアラート表示    タニ     2016/01/29(Fri) 16:00返信

A級初心者 様

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

アラートにはこだわっていないため、
メッセージウィンドウで出来るようであれば参考にさせて頂きたいです。

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


73  Re:[72] ブラグインメニュー実行中のアラート表示    A級初心者     2016/01/29(Fri) 09:29返信

アラートの表示文字列を切り替えるのではなく、
メッセージウインドウを出したり消したりするのでも
画面上で起きることは同じだと思いますが、
それではダメでしょうか?


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に関する表記は誤りといっていいものだと考えます
速やかに訂正されるべきでしょう


70  Re:[69] forward    ゴンスケ     2015/11/30(Mon) 08:51返信

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

将来的な可能性があるのだから、改訂時に生じうるミスを考慮すると、
現時点で載せてあることは不思議ではないですが、ユーザーの利便性からは、
VectorScript Language Guideの説明をFunction Referenceに付記して
おいてほしいとは思います。


> 既知の障害くさいのでサポートに聞ければ良いのですが、

VectorScript Language Guideの記述からは、Forwardが動かないのは
「障害」ではなく、(開発側の一方的な都合であっても)「仕様」であると
判断するのが適切でしょう。

エーアンドエーのどなたか、ここを読んでいらっしゃったら、
VectorScript関連ドキュメントの整備を改善項目にあげておいてくださいね。


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'」のパラメータも連動して変更されるようにしたい。

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


60  Re:[59] 1点型オブジェクトでのSelectObj    A級初心者     2015/10/16(Fri) 18:36返信

> 以前どこかで「VectorScriptはPascal言語を元に・・・」といった内容を呼んだ記憶があり、

VectorScriptはPascalベースであると、エーアンドエーのHPに明記されていますよ。


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点だけ教えてください。

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

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

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

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


56  Re:[55] 1点型オブジェクトでのSelectObj    与太郎     2015/10/08(Thu) 11:55返信

毎度ありぃ です。

1.
ForEachObjectでは検索条件に一致した図形は全て処理しなくてはいけません。途中で中止出来ないのです。
具体的にはForEachObjectで指定したprocedureを検索条件に一致した全ての図形で実行します。
だから最初の図形だけ処理したい場合はprocedureの入り口で最初の図形かどうかを判断して、
そうでなければ何もしないでprocedureから抜けるようにします。
例ではn=0の場合が最初の図形です。

2.
ForEachObjectで実行されるprocedure(例ではDoObject)に渡されるのが検索条件に一致した図形のハンドルなので、
s:= GetRField(h, RecName, FldName);
のようにします。
レコードフィールドの値は文字列で返ってくるので後で数値や論理値に変換する必要があるかも知れませんが、
他のレコードに書き込むだけならそのままでOK。

3.
レコード名での検索は図形にレコードが付加されているかどうかで検索するので、必要なのはレコード名のみです。


55  Re:[53] 1点型オブジェクトでのSelectObj    タニ     2015/10/08(Thu) 10:36返信

与太郎 様

ご返答ありがとうございます。
ご返答いただいた内容に私の知識不足で理解できない箇所がいくつかあります。


1.下記内容はどのような目的で明記されているのか教えてください。

   if n = 0 then begin
   n:= n + 1;


2.{ ここでレコードを読む }の箇所には具体的にどのように明記すればよいでしょうか。
  私のイメージでは、すでに図面上にあるオブジェクトから検索条件に合致するレコードフィールド値を持つものにハンドル接続し、
  そのオブジェクトの他のレコードフィールド値を取得したいと思っています。

  「GetRField」を利用するとの認識でよろしいでしょうか。
  その際に接続するハンドルは??  すみません。私の知識では理解できていません。


3.'@レコード名'の箇所は「'レコード名'.'レコードフィールド値名'='検索したい値'」を明記すればよいのでしょうか。


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


54  Re:[48] 書き出したVectorScript    タニ     2015/10/08(Thu) 09:37返信

A級初心者 様

お世話になっております。

教えて頂いた方法をWINDOWSのメモ帳を利用してやってみました。

作業的には、

1.VectoeWorksであらかじめ作成した図形をVectorScriptで書き出す。
2.書き出したデータをメモ帳で開き、{Object Creation Code}部分に明記されている内容をコピーし、メモ帳の別ファイルに貼り付ける。
3.教えて頂いた方法で不要な内容を削除し、コピーする。
4.VectorWorksで作成中のPIOのコマンドに貼り付ける。

以上で不要な内容を手作業で削除するよりかなり効率化されました。

個人的には、書き出したVectorScriptで明記されていた下記が何を意味しているのかを
後日時間があるときに調べてみようと思っています。

objectHandle := LNewObj;
SetObjectVariableBoolean(objectHandle, 1160, FALSE);

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



> タニさん、ご希望の結果を得られましたか?
>
> こういう場合、あくまでもVectorScriptでやりくりするのと、
> 私が書いたようにVectorWorksの外で何とかするのと、
> どちらが効率的であるかを知りたいので、ぜひ結果を教えてください。


53  Re:1点型オブジェクトでのSelectObj    管理人代筆ー与太郎さん     2015/10/07(Wed) 17:59返信

PIO(プラグインオブジェクト)の中でDSelectAllを実行した場合、その対象は生成中のPIOの中に限られます。
つまりPIO内の、DSelectAllを実行する直前までに作成した図形が選択解除されます。
しかし、可能だとしてもPIOの中から外部の図形の選択状態を変えるのはお勧め出来ません。
PIO生成スクリプトが実行されるのはPIOを描くときだけとは限りませんので。
ですから他の方法で図形のハンドルを取得しましょう。

ForEachObjectを使えば検索条件に合った(PIOの外側の)図形を全て処理出来るので、
最初か最後の図形のレコードを参照すれば良いでしょう。
「最初か最後」と書いたのは、タニさんの指す「最上位」が一番上か最初(First)かが判らないからです。
マニュアルにある「最上位」はFirstの意味で、最上位の図形は最初に描かれた図形なので一番下(最背面)にあります。
以下は指定したレコードを持つ最初(一番下、最背面)の図形のレコードを読む例です。

procedure test; { プラグインオブジェクトの中から特定のレコードを持つ図形にアクセスする }
{$ DEBUG}
const
__SQ = '''';
var
__criteria__:string;
__h__:handle;
__n__:integer;

__procedure DoObject(h:handle); { 最初の図形のみ処理する例 }
__begin
____if n = 0 then begin
______n:= n + 1;
______{ ここでレコードを読む }
____end;
__end;{DoObject}

begin{main}
__Rect(-10, 10, 10, -10);
__n:= 0;
__criteria:= Concatp('R IN[', SQ, '@レコード名', SQ, ']'); {この行の@は削除して下さい。}
__ForEachObject(DoObject, criteria);
__{ ここでレコードを作成 }
end;
Run(test);

この他に、PIO内で処理せずにPIOを描くプラグインツールを別に作って、そこでレコードの読み書きをする方法もあります。

最上位と最下位はA&Aの訳が悪いのが混乱の元なのですが、
メニューとツールとオブジェクトの区別など、ユーザー側でも用語は明確にするように気を付けて混乱を避けましょう。


49  書き込みテストです    管理人     2015/10/07(Wed) 06:53返信

大丈夫?
大丈夫!


48  Re:[46] 書き出したVectorScript    A級初心者     2015/10/05(Mon) 19:54返信

タニさん、ご希望の結果を得られましたか?

こういう場合、あくまでもVectorScriptでやりくりするのと、
私が書いたようにVectorWorksの外で何とかするのと、
どちらが効率的であるかを知りたいので、ぜひ結果を教えてください。


47  1点型オブジェクトでのSelectObj    タニ     2015/10/02(Fri) 17:14返信

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

プラグインコマンドで1点型オブジェクトを作ろうとしています。

コマンド内で「SelectObj(c : CRITERIA);」を使用し検索条件の
レコード値に合致する図面上のオブジェクトを選択し、そのオブジェクトが複数ある場合は
最上位のオブジェクトにハンドル接続して他のレコード値を取り込もうと思っています。

その際に、「SelectObj(c : CRITERIA);」で選択したオブジェクトを「DSelectAll;」
で選択解除しようとしても解除されません。

いろいろ試してみたのですが、プラグインコマンドを「メニュー」で作成した場合は
「SelectObj(c : CRITERIA);」で選択したオブジェクトを「DSelectAll;」で選択解除できました。

1点型オブジェクトで「SelectObj(c : CRITERIA);」を使用するべきではないのでしょうか。
何か他の対応方法はありますでしょうか。

尚、使用しているソフトはWINOWSの「VectorWorks 2012 Fundamentals」です。


分かりにくい説明で申し訳ございませんが、
ご教示をお願いいたします。


46  Re:[44] 書き出したVectorScript    タニ     2015/09/25(Fri) 10:58返信

A級初心者 様

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

テキストエディタにそのような機能があることを知りませんでした。
勉強になります。

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

> 定型処理ではなさそうですから、余計なことをやりたくない私なら、
> VectorWorksの外で処理することを考えます。
>
> 質問文からは単なるテキスト処理ができれば済むようですから、
> テキストエディタでVectorScriptファイルを開いて、当該部分を
> 一括削除するだけで済みますね。意外と知らない人が多いのですが、
> Wordでもできます。検索文字列に下記を入れ、置換文字列を空欄にして
> 置換すれば、ほぼ瞬時に、あるいは数秒内に処理が終わるでしょう。
>
> objectHandle := LNewObj;^lSetObjectVariableBoolean(objectHandle, 1160, FALSE);
>
> 「 ^l 」は強制改行を示します。
>
> 「1160」という数値が何だか分かりませんが、あちこちで異なる数値になっているなら、
> 検索文字列にワイルドカードを使えばよいでしょう。
>
> DOS時代の知識をお持ちであれば、sed を使えば、半・定型処理化できそうです。


45  Re:[44] 書き出したVectorScript    A級初心者     2015/09/08(Tue) 21:02返信

自己レスですみませんが、最後の一文にミス発見。

> DOS時代の知識をお持ちであれば、sed を使えば、半・定型処理化できそうです。

「DOS時代の知識」→「Unixの知識」
「半・定型処理化」→「半・自動化」

現在のMac OSはUnixベースになっているので、たぶん標準でsedが付いているでしょう。
Windowsでは、sedはDOSの標準コマンドではないので、別途入手する必要があるはずです。


44  Re:[43] 書き出したVectorScript    A級初心者     2015/09/04(Fri) 15:30返信

定型処理ではなさそうですから、余計なことをやりたくない私なら、
VectorWorksの外で処理することを考えます。

質問文からは単なるテキスト処理ができれば済むようですから、
テキストエディタでVectorScriptファイルを開いて、当該部分を
一括削除するだけで済みますね。意外と知らない人が多いのですが、
Wordでもできます。検索文字列に下記を入れ、置換文字列を空欄にして
置換すれば、ほぼ瞬時に、あるいは数秒内に処理が終わるでしょう。

objectHandle := LNewObj;^lSetObjectVariableBoolean(objectHandle, 1160, FALSE);

「 ^l 」は強制改行を示します。

「1160」という数値が何だか分かりませんが、あちこちで異なる数値になっているなら、
検索文字列にワイルドカードを使えばよいでしょう。

DOS時代の知識をお持ちであれば、sed を使えば、半・定型処理化できそうです。


43  書き出したVectorScript    タニ     2015/09/04(Fri) 14:01返信

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

VectorWorksで作成済みの図形をVSで書き出して、
別のプラグインオブジェクトに使おうと思っています。

書き出した際、各図形のあとに下記が明記されていました。

objectHandle := LNewObj;
SetObjectVariableBoolean(objectHandle, 1160, FALSE);

これがどのような働きをしているのか調べてみてもイマイチよく分かりません。
このまま貼り付けても描画されず、削除すると描画されました。

複雑な図形を書き出した場合、これが各図形のあとに大量に明記されているため、
すべてを削除するには相当な手間がかかります。

削除せずに描画する方法はありますでしょうか。

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


42  Re:プラグインオブジェクトへのレコード連結    masafumi     2015/09/02(Wed) 18:51返信

与太郎さんお久しぶりです。そして、フォローありがとうございます。m(_ _)m
とてもわかりやすい解説で感心しております。
メーリングリストで教えていただいた時は理解しているつもりでしたが、
今となっては???の連続で、情けないかぎりです。

タニさん、上手くいってよかったですね。こちらこそよろしくお願いします。


41  Re:プラグインオブジェクトへのレコード連結    タニ     2015/09/02(Wed) 18:00返信

masafumi様・与太郎様

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

教えて頂いたGetCustomObjectInfo(objectName, objectHand, recordHand, wallHand)で上手くいきました。

VectorScriptエディタの左上にある「手続き/関数」や「VectorScript Reference」で
目的のものを探していたのですが、
なかなか見つけられなかったので助かりました。

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


40  Re:[37] ワークシートの複製    タニ     2015/09/02(Wed) 17:51返信

A級初心者 様

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

教えて頂いた検索方法も取り入れて、
VSの知識向上に励みたいと思います。

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


> 「VectorScript duplicate worksheet」でGoogleで検索したら、
> トップに出てきましたよ。下にURLを書きます。
>
> レファレンスで使われている英単語をキーワードとして検索すれば、
> わりと簡単に見つかることが多いから、タニさんもそうなさるとよいでしょう。


39  Re:[38] プラグインオブジェクトへのレコード連結    与太郎     2015/09/02(Wed) 14:20返信

こんにちわ。

GetCustomObjectProfileGroupはパス型PIO(プラグインオブジェクト)に使う関数なので今回は関係無いです。

GetCustomObjectInfo(objectName, objectHand, recordHand, wallHand)の内、objectHandがPIO自身のハンドルです。
SetRecord(objectHand, recordName); で生成中のPIOにレコードを連結出来ます。
objectNameは生成中のPIOの名前です。
recordHandはPIOのデフォルトパラメータの役目をする、PIOと同名のレコードのハンドルです。
wallHandはPIOが挿入された壁のハンドルです。


38  Re:[36]プラグインオブジェクトへのレコード連結    masafumi     2015/09/01(Tue) 19:42返信

こんばんはいつも先走って、勘違いをします。
いつもトンチンカンな解答で申し訳ありません。m(_ _)m
トンチンカンついでに

>作成途中のプラグインオブジェクトのハンドルは取得できるのでしょうか。

------------------------------------------------------------------------------------------------
FUNCTION GetCustomObjectInfo (VAR objectName :STRING;
VAR objectHand :HANDLE;
VAR recordHand :HANDLE;
VAR wallHand :HANDLE ) :BOOLEAN ;

プラグインオブジェクトのソースコード内で利用され、そのプラグインオブジェクトの情報を返します。
オブジェクトが壊れている場合にのみ、FALSEを返します
------------------------------------------------------------------------------------------------

FUNCTION GetCustomObjectProfileGroup (objectHand:HANDLE ) :HANDLE ;

ハンドルで指定したプラグインオブジェクトの輪郭図形のハンドルを返します。
------------------------------------------------------------------------------------------------

以前、VSメーリングリストで教えて頂いたのですが、これは使えないでしょうか?・・・
使い方は・・・よくわかりません。m(_ _)m


37  Re:[35] ワークシートの複製    A級初心者     2015/09/01(Tue) 16:56返信

「VectorScript duplicate worksheet」でGoogleで検索したら、
トップに出てきましたよ。下にURLを書きます。

レファレンスで使われている英単語をキーワードとして検索すれば、
わりと簡単に見つかることが多いから、タニさんもそうなさるとよいでしょう。

https://techboard.vectorworks.net/ubbthreads.php?ubb=showflat&Number=181048


36  プラグインオブジェクトへのレコード連結    タニ     2015/09/01(Tue) 11:06返信

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

VSでプラグインオブジェクト(1点型オブジェクト)を作成し、既存のレコードをVSで連結したいと思っています。

レコードの連結は「PROCEDURE SetRecord(h :HANDLE; record :STRING); 」でよいと思うのですが、
プラグインオブジェクトを作成するコマンド内でプラグインオブジェクトのハンドルを取得する方法が分かりません。

構成する図形であればハンドルを取得できますが、
作成途中のプラグインオブジェクトのハンドルは取得できるのでしょうか。

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


35  Re:[34] ワークシートの複製    タニ     2015/09/01(Tue) 10:51返信

masafumi様

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

私の説明が不十分でした。

レイヤ上に配置されている既存のワークシートを複製ではなく、
リソースブラウザ上の既存ワークシートをリソースブラウザ上へ複製したいと思っています。

解決方法がございましたら、ご教示をお願いいたします。


34  Re:[33]ワークシートの複製    masafumi     2015/08/29(Sat) 21:45返信

こんばんは、タニさん。
試していませんがこれで出来ませんか?

-----------------------------------------------------------------------------------------
PROCEDURE Duplicate ( offsetDX :REAL; offsetDY :REAL ) ;

選択されている図形を複製し、指定した位置に移動させます。
他のレイヤが「表示+スナップ+編集」の場合、他のレイヤ上の選択されている図形も複製される。

-----------------------------------------------------------------------------------------
FUNCTION HDuplicate ( objectHandle :HANDLE; x :REAL; y :REAL ) :HANDLE ;

ハンドルで指定した図形を複製し、指定した距離で動かします。
-----------------------------------------------------------------------------------------


33  ワークシートの複製    タニ     2015/08/28(Fri) 12:20返信

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

VSをつかって既存のワークシートを複製したいのですが、
複製方法を教えてください。

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


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

- LightBoard -