Script談話室バックナンバー2013

テスト   manabu
Wed Aug 14 19:53:33 2013

管理人さん、代筆ありがとうございます。
これは書き込みテストです。


テスト    管理人
Wed Aug 14 15:15:57 2013

うまく書き込めたら、これは削除します。


スクリプトの公開    manabu(管理人代筆)
Wed Aug 14 15:07:49 2013

スクリプトの書き直しが終了し、http://qoo.blog.eonet.jp/popc/vw_tool.htmlで公開しました。
参考にどうぞ。


Re:リストブラウザについて   manabu
Mon Jul 29 20:26:53 2013

あちら(アメリカ)のオンラインヘルプにサンプルがあったので、できそうな気がしてきました。


あらしのため    管理人
Sat Jul 27 14:48:48 2013

移動しました。
こちらでどうぞ。


リストブラウザについて   manabu
Fri Jul 26 20:10:44 2013

だいぶ昔にこちらでお世話になりました
久し振りにスクリプトの書き直しをしております

そこで、リストブラウザへの書き直しを試みたのですが、どうも上手くいきません
リストブラウザの基本的な書き方がわかる方いらっしゃいませんでしょうか?


全図形表示のスクリプト5    しんいち
Thu May 23 15:11:46 2013

少し時間が取れたので
ゴンスケさん提案の画面登録は

ビュ−画面を登録-リソ−スブラウザ-登録画面-****で登録されました
タイプはVectorScripでしたがこの内容を読み取ることは出来ませんでした。

オ−ガナイザへのアプロ−チよりはこちらの方が速そうです。


全図形表示のスクリプト4    しんいち
Thu May 23 9:59:59 2013

ゴンスケさんへ

A&Aからのメールhttp://www.aanda.co.jp/develop/VSBook/index.htmlを一読
しました。現在Autocadによる仕事中なので時間的にむずかしい状態です。

全図形表示の別アプロ−チを考えたのですが

オ−ガナイザ-クラス-表示-ALT+表示欄で全選択が出来るのですが
この操作をVectorScriptにする方法が判りませんでした。


Re^3:全図形表示のスクリプト3    ゴンスケ
Mon May 20 21:49:05 2013

しんいちさん、スクリプト学習中ですがさん、
A&Aからのメールですでにご存じかもしれませんが、
下記、貴重な機会ではないでしょうか?
http://www.aanda.co.jp/develop/VSBook/index.html


Re:全図形表示のスクリプト3       しんいち
Sun May 19 10:33:49 2013

スクリプト学習中ですが さんへ
こんにちは。情報有難う御座います。
スクリプト超が付くほどの初心者の私には難しいので、パワ−ユ−ザ−さんの
協力を待ちたいと思います。


業務連絡    管理人
Wed May 15 23:11:49 2013

談話室荒らしのため移動しました。


Re:全図形表示のスクリプト    スクリプト学習中ですが
Tue May 14 21:32:10 2013

談話室で学ばせてもらっている者です。
Show は、マニュアルには、
「隠されているまたは、グレイ表示されている図形で検索条件に合致したものを表示します。」
と書いてあったので、全図形表示にはならないんじゃないかと思います。

クラスの表示状態を変えるコマンドを探してみたら、SetClassOptionsというのがありました。
これを使うんだと思いますが、よく分かりません。
しんいちさん、スクリプトができたら教えてください。


全図形表示のスクリプト    しんいち
Mon May 13 19:06:17 2013

選択したオブジェクト以外のクラスを非表示にするスクリプトを実行後

全図形表示
Show((ALL));

を実行すると表示はされるのですが、選択が出来ないので
オ−ガナイザ、ナビゲ−ションパレットを見ると非表示のままでした。

これを表示にするスクリプトがあれば作業効率が上がるので教えて下さい。
(なぜか私ばかりの質問で申し訳有りません)    


RE.13:選択したオブジェクト以外のクラスを非表示にする       しんいち
Sun May 12 20:02:28 2013

ゴンスケさんへ

丁寧な説明を有難うございます。
与太郎さん作のスクリプトをメモ帳にコピペした際に
欠落したようです。
コピペしてVWEditorで全角アンダ−バ−をスペ−スキ−に置き換えました。


RE.12:選択したオブジェクト以外のクラスを非表示にする    ゴンスケ
Fri May 10 12:11:19 2013

{ Error: Expected a Procedure.}から分かるのは、当該行のend の対応元が
ないためにエラーが生じているということです。つまりこの行単独で起きている
エラーではないので、スクリプト全体を見ないと、原因を特定できないわけです。
そこで、前の書き込みで、スクリプト全体を掲載するようにお願いしたのでした。

end の対応元がないけれど、最終行まで無事に到達しているということから、
手始めに行数を比較してみたら、あっさりと原因を特定できました。

与太郎さんのスクリプト行数 = 38行
しんいちさんのスクリプト行数 = 37行

しんいちさんのは、与太郎さんの26行目(下記)がありません。
if shwCls <> ClassList(i) then begin

しんいちさんが、どのような方法を採られたのか分かりませんが、
与太郎さん作のスクリプト全体を丸ごとコピーして、メモ帳など何でもよいので
エディタにペーストし、一括置換機能を用いて、全角アンダーバーを空白かタブに
置換すれば、今回の問題は生じなかったでしょう。


ところで与太郎さん、このスクリプト、最後に画面登録するところまで行ったら
私にとって、かなり使い勝手が上がりそうなので、スクリプトをお借りして、
追々、試してみたいと思います。
(いつも、実用的で参考になるスクリプトありがとうございます。)


RE.11:選択したオブジェクト以外のクラスを非表示にする       しんいち
Fri May 10 10:21:34 2013

お言葉に甘えて (ゴンスケさん、管理人さんへ)

Re: 選択したオブジェクト以外のクラスを非表示にする    与太郎さん作
Wed Apr 24 10:17:46 2013
下記スクリプトですが
与太郎さんの環境では動くそうですが
私の環境
OS Windows XP
Professinal 2002
SP3
Vectorworks2008J
では


procedure HideOtherClassObjs;
const
SelectedObjects = 2;
TraverseShallow = 0;
EditableLayers = 4;
var
i, n, nH :integer;
shwCls :string;

function DoObject(h:handle):boolean;
begin
n:= n + 1;
shwCls:= GetClass(h);
DoObject:= false;{ trueならForEachObjectループ終了 }
end;{DoObject}

begin{main}
n:= 0;
ForEachObjectInLayer(DoObject, SelectedObjects, TraverseShallow, EditableLayers);
if n = 0 then
AlrtDialog('選択図形がありません!')
else begin
nH:= 0;
for i:= 1 to ClassNum do begin
HideClass(ClassList(i));
nH:= nH + 1;
end;{if}
end;{for}
if 0 = nH then
AlrtDialog('非表示にするクラスはありませんでした。')
else begin
AlrtDialog(Concat('「', shwCls, '」クラス以外を非表示にしました。'));
end;
end;{if}
end;{main}
Run(HideOtherClassObjs);

エラ−内容
Line #35: end;{main}

|
{ Error: Expected a Procedure.}
最終行でエラ−が出て折角のコマンド使えませんのでアドバイスを
お願致します。何度も申し訳有りません。


RE.10:選択したオブジェクト以外のクラスを非表示にする    管理人
Thu May 9 23:29:54 2013

ゴンスケ殿>で、いいですか、管理人さん?
御意。
恐縮。
感謝。


RE.9:選択したオブジェクト以外のクラスを非表示にする    ゴンスケ
Thu May 9 23:15:38 2013

> ゴンスケさんへ
> Script若葉マ−クですのでご容赦願います

今回書き込んでくださったようなフィードバックは、
談話室を訪れる多くの人々にとって価値がある情報ですから、
気兼ねなく書いていただければ!と、管理人さんになりかわって
お願いします。(で、いいですか、管理人さん?)

なお、今回のご質問については、書かれたスクリプトをまるごと
コピペして掲載した方がエラーの原因を特定しやすいと思います。


RE.8:選択したオブジェクト以外のクラスを非表示にする    しんいち
Thu May 9 12:31:19 2013

Line #29: f 0 = nH then

|
{ Error: Identifier not declared.

Line #29: if 0 = nH then のコピ−ミスでした
エラ−は消えました

      Line #35: end;{main}

|
{ Error: Expected a Procedure.}
最終行でエラ−が出て折角のコマンド使えませんのでアドバイスを
お願致します。
 ゴンスケさんへ
Script若葉マ−クですのでご容赦願います 


re:面積記入について 3    しんいち
Fri Apr 26 8:02:17 2013

ゴンスケさんへ
過去ログでお名前拝見したことのあるパワ−ユ−ザ−の方ですね。
貴重な意見をいただき、有り難うございます。


cadと関わって30数年、Autocadユ−ザ−です。頭がVectorworksに馴染んでなくて
なかなかビジネスシ−ンでの対処が出来ていないのが実情です。


re:面積記入について 2.    ゴンスケ
Thu Apr 25 18:29:58 2013

しんいちさん、以下、やや苦言めいていますが、できれば読んでください。

まず、件名は、質問内容が分かるようにしてください。
つぎに、質問内容も何を問われているのか分かりにくい点があるので、
他の人に分かるように書いた方がよいでしょう。

> もう少し初心者向け解説書等が必要では無いでしょうか?

市販の学習本ならどれでもよいと思いますが、強いて言えば、VectorWorks学習帳で
しょうか。マニュアルも昔よりはまともになっています。

VectorScript学習については、エーアンドエーのHPに学習ページがあるし、
この談話室で公開されたものを、マニュアルを読みながら解読するのも良い学習です。

7年ぶり(?)と書かれていたと思いますが、それくらい長期間使わなかったら、
かなり多くの部分が頭から抜けてしまっているでしょう。WindowsでもMac OSでも
基本中の基本であるコピーペーストさえお忘れになっていたようですから、
入門テキストを使った基礎的な内容の復習が必須だと思います。

ここでは、基礎的な学習を終えた人からの質問の方が割合として多いようだから、
質疑応答に対して、???となるのはやむをえないかもしれません。ですから、
急がば回れで、あらためて基礎的な学習をされた上で、お分かりにならない点を
的を絞って質問されることをお勧めします。

(管理人さん、上記のような書き込みが不適切であれば、お手数ですが削除願います。)


面積記入について 2.       しんいち
Thu Apr 25 16:36:30 2013

自己レスです

2.Vectorworksでは、窓選択で囲んだ部分の複写とか切り抜きができる操作方法のコマンドがありませんがScript等があったら教えて下さ い.

コマンド カットandペ−スト、コピ−andペ−ストで出来ましたけど
長い長さの場合両端部が含まれていないと選択されません、どのように
しているのか教えて下さい。SHIFT+で追加ですか?


バックナンバ−を読み返してみました    しんいち
Thu Apr 25 15:27:53 2013

今回の件でバックナンバ−を全て読み返してみました。
何かの役にたつかとVectorworks附属のVecterScriptも読んでみました。

?・?・?の事ばかり。
もう少し初心者向け解説書等が必要では無いでしょうか?
お勧めの本がありましたら教えて頂けませんか?


RE.7:選択したオブジェクト以外のクラスを非表示にする       しんいち
Thu Apr 25 10:59:21 2013

与太郎さんへ
丁寧な説明有難う御座います。
全角アンダーバーの件は
 了解いたしましたので、スペ−スに変えて再保存致しました。

エラ−メッセ−ジの件
 ファイル検索で検索致しました。

今回のエラ−内容です
Line #29: f 0 = nH then

|
{ Error: Identifier not declared. }


Line #34: end;{if}

|
{ Error: Expected a Procedure. }
 
かさねがさね申し訳ありませんが宜しくお願い致します。


RE.6:選択したオブジェクト以外のクラスを非表示にする    与太郎
Wed Apr 24 19:42:27 2013

説明が足りなかったようですみません。
全角アンダーバーは、この掲示板でタブが使えないのでタブの代わりに使っています。
ですから保存するときに"__"をタブかスペースに置き換えてください。
削除だと名前と名前の区切りが消えてエラーになることがあります。

エラーメッセージの件ですが、"ErrorOut.txt"というテキストファイルになっています。
"Documents and Settings"フォルダ内のユーザーフォルダの奥深い場所にあるので
ファイル検索で探してみてください。


RE.5:選択したオブジェクト以外のクラスを非表示にする         しんいち
Wed Apr 24 15:57:50 2013

与太郎さんへ
アンダ−バ−部分をキ−ボ−ドより直接打ち込みました。
エラ−メッセ−ジ内容を書き込みます。

Line #10:__function DoObject(h:handle):boolean;
|
{ Error: Expected :}
Line #11:__begin
|
{ Error: Expected BEGIN }
アンダ−バ−の数は読み取れていないので推定です。
(エラ−確認の内容がコピペできないので)
かさねがさね宜しくお願い致します。



RE.4:選択したオブジェクト以外のクラスを非表示にする       しんいち
Wed Apr 24 15:19:00 2013

与太郎さんへ

早速の対応有難う御座います。
提示したいただいたスクリプトをメモ帳にコピペして保存の上、VectorScriptエディッタの画面で開き保存。この際アンダ−バ−が全角に変わるこ とは無いと思いますが、アンダ−バ−のみ修正してトライしてみます。

エラーメッセージ内のスクリプトが元のと微妙に違うのは
私のタイプミスです
(エラ−確認の内容がコピペできないので)


1.面積記入について    しんいち
Wed Apr 24 15:02:23 2013

自己レスです
Wed Jul 26 2006年の面積記入のScriptを
メモ帳にコピペして保存の上、VectorScriptエディッタの画面で開き保存
で使えるようになりました。


RE.3:選択したオブジェクト以外のクラスを非表示にする    与太郎
Wed Apr 24 13:35:42 2013

>Line #3:_SelectedObjects=2;
>|
>{Error:CONST,TYPE or VAR must be followed by a new identifier name.}
SelectedObjectsの前のアンダーバーが気になります。
タブ代わりに使っている全角アンダーバーが残っていませんか?

>Line #4:_traverse Shallow =0;
>|
>{Error:Expected BEGIN}
traverseとShallowの間にスペースが入っていると定数名として認識されません。

エラーメッセージ内のスクリプトが元のと微妙に違うのは、コピペするときに変わるんでしょうか?


RE:選択したオブジェクト以外のクラスを非表示にする       しんいち
Wed Apr 24 12:34:34 2013

与太郎さんへ
スクリプト試しましたのでお知らせ致します。
やはりエラ−がでましたので、内容を書き込みます。

Line #3:_SelectedObjects=2;
|
{Error:CONST,TYPE or VAR must be followed by a new identifier name.}

Line #4:_traverse Shallow =0;
|
{Error:Expected BEGIN}
uv (この部分は選択クラスで変化する)
それにしてもエラ−確認の内容もコピペ出来ないのは私の環境のせいなのかな?
今回の試している図面はグル−プもシンボルもないのですが・・・・。
宜しくお願い致します。


Re: 選択したオブジェクト以外のクラスを非表示にする    与太郎
Wed Apr 24 10:17:46 2013

私の環境ではエラーを確認出来ませんが、
古いスクリプトだとグループやシンボルの中で選択図形が拾えないので、
下のスクリプトを試して頂けますか。

{ 選択したオブジェクト以外の「クラス」を非表示にする }
procedure HideOtherClassObjs;
const
__SelectedObjects = 2;
__TraverseShallow = 0;
__EditableLayers = 4;
var
__i, n, nH :integer;
__shwCls :string;
__
__function DoObject(h:handle):boolean;
__begin
____n:= n + 1;
____shwCls:= GetClass(h);
____DoObject:= false;{ trueならForEachObjectループ終了 }
__end;{DoObject}
__
begin{main}
__n:= 0;
__ForEachObjectInLayer(DoObject, SelectedObjects, TraverseShallow, EditableLayers);
__if n = 0 then
____AlrtDialog('選択図形がありません!')
__else begin
____nH:= 0;
____for i:= 1 to ClassNum do begin
______if shwCls <> ClassList(i) then begin
________HideClass(ClassList(i));
________nH:= nH + 1;
______end;{if}
____end;{for}
____if 0 = nH then
______AlrtDialog('非表示にするクラスはありませんでした。')
____else begin
______AlrtDialog(Concat('「', shwCls, '」クラス以外を非表示にしました。'));
____end;
__end;{if}
end;{main}
Run(HideOtherClassObjs);


選択したオブジェクト以外のクラスを非表示にする    しんいち
Tue Apr 23 17:37:08 2013

連続投稿ですみません
与太郎さん作
Mon Feb 23 2004
の表題のScriptをメモ帳にコピペして保存の上、VectorScriptエディッタの画面に上記Scriptをコピペ。
Scriptを実行すると3行目、6行目にエラ−がでるようです。
使いたいのでどのように直せば良いか教えて下さい。


面積記入について教えて下さい       しんいち
Mon Apr 22 11:43:05 2013

ずっとAutocadばかりで
7年ぶりにVectorworksを触っています。
OS Windows XP SP2
Vectorworks2008J

Vectorworks談話室からこちらに来ました。
1.Script談話室
Wed Jul 26 2006年の面積記入のScriptの登録方法を全く忘れてしまいました。
どなたかご指導のほど宜しくお願致します

あいまいな記憶のなかで試した
リソ−スブラウザ-新規・名称未設定-VectorScript-名前をつける-VectorScriptエディッタの画面に上記Scriptをコピペし ようとしたのですが出来ませんでした。

2.Vectorworksでは、窓選択で囲んだ部分の複写とか切り抜きができる操作方法のコマンドがありませんがScript等があったら教えて下さ い。


Re.2:ベクタースクリプトで自動化    超初心者
Tue Apr 9 22:46:58 2013

与太郎様
ご報告が遅くなり、申し訳ありません。超初心者です。
教えていただいたやり方で試してみました。上手く動きました!
クラスとレイヤをメニューからではなく、小窓から設定する作業方法なので、その部分と不要情報消去を修正してみました。
各々の値が入れられないのが残念ですが、ショートカットキーを何度も押さないでメニューが出るだけでも作業効率がずいぶん違います。
コマンド実行でテキストファイルを読み込むことが出来るというのがわかったのも良かったです。
初心者でもわかりやすく丁寧に教えていただいて本当に有難うございました。

Procedure test;
Begin
NameClass('M');
Layer('S');
DoMenuTextByName('Class Options'2);
DoMenuTextByName('Puge'0);
DoMenuTextByName('Export DXF/DWG'0);
DoMenuTextByName('Save As'0);
End;
Run(test);


Re.1:ベクタースクリプトで自動化    与太郎
Tue Apr 9 10:54:42 2013

ようこそScript談話室へ。

VectorScriptの実行方法ですが、
「コマンドを実行...」と「取り込む」→「VectorScript...」はテキストファイルとして保存されたVectorScriptを実行するの で、
VectorScriptファイルはテキストファイルになっている必要があります。
古いバージョンだと文字コードがShift-JISでないと日本語等が文字化けするかも知れません。

それから、この掲示板のレス番は投稿者が自分で付けるのが慣習なので以後宜しくお願いします。


ベクタースクリプトで自動化    超初心者
Mon Apr 8 23:03:26 2013

すみません。VectorWorks談話室から移動してきました。
どちらかがお目に留まるように同じ内容を書き込みます。

与太郎様
お教えいただきありがとうございます。本当に助かります。
今日会社でVectorScriptランゲージというのを読んで自習してきました。
明日教えていただいたこと早速試してみます。

一つ根本的な部分で困っているのですが、他からまわってくる既存の.mcdの保存をしますので、共有というのをしても次の.mcdで作成した VectorScriptを使おうとすると、パレットの登録という作業が入ってしまい、手間もありますが、既存ファイルの内容を変更してしまうので良くな いというのがわかりました。
階層からプラグインコマンドを使う方法は、コマンドの実行が上手くいかず使うことができませんでした。

もしよろしければ、こちらの部分もお教えいただけないでしょうか。
ずうずうしいですが、よろしくお願い致します。


お手数をお掛けします。    管理人
Thu Mar 28 23:40:28 2013

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


こちらに引っ越しました    管理人
Thu Mar 28 22:56:01 2013

以前の頁はかきこみできません。
こちらへどうぞ。


ファイル内の特定の線の太さをすべて変更する    与太郎
Thu Jan 31 13:09:36 2013

VectorWorks談話室からのお題です。

下のスクリプトでグループ内の図形の線の太さも変えられます。
線の太さを設定するインターフェースは作ってないので、
別の太さで実行するには、最初のOldWidthNewWidthの数字を書き換えてください。
単位はミル(= 1/1000inch = 0.0254mm)です。
スクリプトはリソースブラウザから新規リソースでVectorScriptコマンドを作るか、
選択マクロなどで「コマンドを作成」オプションでコマンドを作ってから、
コマンドパレットのコマンドをoption(Alt)+ダブルクリックで開いて書き換えてください。

Procedure Set_LineWidth;
{
ファイル内の特定の線の太さをすべて変更する }
const
OldWidth = 5;{5mil=0.13mm}
NewWidth = 8;{8mil=0.2mm}

var
n:longint;

Procedure DoObject(h:handle);
const
GroupObj = 11;
SymbolObj = 15;
VAR
ObjH, SDefH:HANDLE;
name:STRING;
BEGIN{DoObject}
case GetType(h) of
GroupObj, SymbolObj: begin end;
otherwise begin
if GetLW(h) = OldWidth then begin
SetLW(h, NewWidth);
n:= n + 1;
end;{if}
end;
end;{case}
END;{DoObject}

BEGIN{main}
n:= 0;
ForEachObject(DoObject, (ALL & INSYMBOL));
ReDrawAll;
SysBeep;
AlrtDialog(Concat(n, '
個の図形の線の太さを', OldWidth, 'ミルから', NewWidth, 'mmに変更しました'));
END;{main}
Run(Set_LineWidth);

クラス属性で線の属性を設定すると、線の属性の変更はクラス属性の変更で済むので、
MiniCAD
からVectorWorcsになってからはあまり使わないタイプのスクリプトです。


re^2:文字列のコピー    ゴンスケ
Sat Jan 26 10:45:17 2013

自己レスです。

原因がどこにあったのか分かりませんが、VectorWorks2012
再インストールしたら、できるようになりました。
HitoMi
さんの質問がきっかけとなって、気づいていなかった
問題がひとつ解決できたので感謝!


re:文字列のコピー    ゴンスケ
Fri Jan 25 15:02:21 2013

きむらさん、ありがとうございます。

クリップボード間のテキストコピーは当然できると思っていて、
いままで意識したことがありませんでした。今回初めて意識して
やってみたらダメで(2012)、きむらさんの書き込みを拝見して
2008
でやってみたらできました。私の2012に問題があるのか、、、。


文字列のコピー    きむら
Fri Jan 25 14:02:15 2013

こんにちは、

>
また文字列をダブルクリックして編集状態にしてコピーしたものは、
>Word
にもテキストエディタにもペーストできませんでした。

これは、Vw2013だと出来ますよ。
もう少し前のバージョンでも出来るんじゃないでしょうか?


Re.6: 文字列のコピー   HiroMi
Fri Jan 25 13:16:59 2013

ゴンスケさん 有り難うございます。

VectorWorks
はやはり図を描く事を第一義のもの としているという事ですね。
何とか図を描いて、仕様を書込むのを効率よく出来ないかと考え
このところ文字列についてのものを色々試しています。
また問題が発生しましたら 皆様にご相談させて頂きます
宜しくお願い致します。


Re.5: 文字列のコピー    ゴンスケ
Fri Jan 25 12:40:55 2013

以下、参考になるかどうか分かりませんが、Windows版での挙動を書きます。

スクリプトで試したのではありませんが、選択ツールで文字を選択し
コピーしたものをWordに貼り付けたところ、文字ではなく図形となりました。
このことから推測できますが、テキストエディタにはペーストできません。

また文字列をダブルクリックして編集状態にしてコピーしたものは、
Word
にもテキストエディタにもペーストできませんでした。
Word
やテキストエディタでコピーして、VectorWorksにペーストはできるので、
VectorWorks
の文字列内容のコピーは、一般的なクリップボードの挙動とは
異なるようです。

視線で位置決めして、文字を音声入力できると嬉しいなぁと思いつつ、、。


Re.4: 文字列のコピー   HiroMi
Fri Jan 25 8:19:10 2013

与太郎さん有り難うございます。

私も 再度バックナンバーを見て 書かれていらっしゃる
2004
<図面上の文字をワークシートにコピーする>を見つけました。
それらを見、下記の様なもの迄 何とか行き着きました、

PROCEDURE CopyText; {2013/01/24}
VAR
h , Objhd:Handle;
pX,pY:Real;
Txt ,NewTxt :String;
{=$DEBUG}
BEGIN
GetPt(pX, pY);
Objhd := PickObject(pX, pY);
IF GetType(Objhd)=10 THEN
Txt:=GetText(Objhd);
NewTxt:=Copy(Txt,1,Len(Txt));
GetPt(pX, pY);
TextOrigin(pX, pY);
BeginText;
Txt
EndText;
END;
RUN(CopyText);

しかしクリップボードに文字列をコピーするのは上手くいかず
無理かもしれませんとの事。残念です。
入力作業として<TextTool>で文字を反転させ、コピーし
ペーストしたい位置を<TextTool>でクリックしペースト。
と云う事が出来るので VectorScriptでも出来ると思ったのですが
残念です。
私もMacのみで17年でして、Windows版だと出来ると云う事は在るんですか!

与太郎さん有り難うございまいました。


Re.3: 文字列のコピー    与太郎
Thu Jan 24 16:51:44 2013

「文字列をコピーする=システムのクリップボードに文字列をコピーする」ということなら、
素直に考えると下のようなスクリプトになるような気がします。

PROCEDURE CopyText;
VAR
Objhd:Handle;
pX, pY:Real;
BEGIN
GetPt(pX, pY);
Objhd := PickObject(pX, pY);
IF (Objhd <> NIL) & (GetType(Objhd)=10) THEN BEGIN
DSelectAll;
SetSelect(Objhd);
DoMenuTextByName('Copy', 0);
END;{IF}
END;
RUN(CopyText);

クリップボードにコピーする方法は「DoMenuTextByName('Copy', 0);」以外にありません。
しかしこの方法は、文字図形と文字列の違いのためうまくいきません。
クリップボードに文字図形ではなく文字図形の中の文字列をコピーするのは無理のようです。
Mac
版では出来ませんでした。Win版ではどうなのでしょうか?

VectorScript
では文字図形を編集状態にしたり編集中の文字を扱ったりは出来ません。
文字編集状態でスクリプトを実行しようとしても、その瞬間に編集モードから出てしまいます。
ですから、クリップボードに文字列をコピーするのはVectorScriptでは無理でしょう。
AppleScript
ならクリップボードに文字列を書き込むことは可能なのですが、
文字図形の中の文字列はVectorScriptでないと得られないし、
VectorScript
からAppleScriptに文字列を渡す方法もないので、
AppleScript
との連携でも無理ということになります。

しかし、クリックで指定した文字のコピーを次にクリックした位置に作るということなら、
下のスクリプトで出来ます。
新しい文字はデフォルトの文字属性で描かれます。

PROCEDURE CopyText;
VAR
Objhd:Handle;
pX, pY:Real;
Txt:String;
BEGIN
GetPt(pX, pY);
Objhd := PickObject(pX, pY);
IF (Objhd <> NIL) & (GetType(Objhd)=10) THEN BEGIN
Txt:=GetText(Objhd);
GetPt(pX, pY);
TextOrigin(pX, pY);
CreateText(Txt);
END;{IF}
END;
RUN(CopyText);

あるいは、Script談話室のバックナンバーにあるスクリプトはいかがでしょうか。
「図面上の文字をワークシートにコピーする」(Fri Dec 3 22:31:51 2004
「ワークシートの文字を描くスクリプト」(Wed Sep 8 12:57:50 2004
ワークシートをクリップボード代わりにして文字列をコピーするスクリプトです。


2: 文字列のコピー   HiroMi
Thu Jan 24 9:02:55 2013

同じ相談文を送信してしまい失礼しました。

相談送信後、また色々やってみてのものを送信します。

PROCEDURE CopyText; {2013/01/24}
VAR
h , Objhd:Handle;
pX,pY:Real;
TxtNum : Integer;
Txt ,NewTxt :String;

BEGIN
GetPt(pX, pY);
Objhd := PickObject(pX, pY);
IF GetType(Objhd)=10 THEN
Txt:=GetText(Objhd);
NewTxt:=Copy(Txt,1,Len(Txt));
SetTool(-200);
END;
RUN(CopyText);

TextTool
にセットされていますので、
<クリック+ペースト>するのですが表示されません。
どこの進め方に不具合が在るのか お教え下さい。
宜しくお願い致します。


文字列のコピー   HiroMi
Wed Jan 23 16:34:56 2013

昨年よりVectorScriptでの文字列の操作について 勉強をしています。
何か参考になるものがないかと Web上を色々見ていましたところ
T.Yabe
さんとおっしゃる方が<DeleteTool for VectorWorks>という
クリック下の図形をdeleteするというものを 載せられていて
これをヒントに クリック下の文字列をコピーしてTextToolにする
というScriptが出来ないかと考えたのです。
W
クリックか、TextToolで文字列を反転させ、
メニュー>編集>コピーで済む事なのですが 作りたいと思いました。

クリック下の図形が 文字列かを判断し、<Len><Copy>を使うのでしょうか
最後に<SetTool:=-200>という形にならないかと思ったのです
しかし 上手くいきません。どなたかお教え下さい。
宜しくお願い致します。


文字列のコピー   HiroMi
Wed Jan 23 16:14:09 2013

昨年より文字列についての VectorScriptを勉強しているのですが、
Web
上で参考になるものはないかと いろいろ見ていましたところ、
T.Yabe
さんが<DeleteTool for VectorWorks>という 
クリック下の図形をDeleteする というものを載せられていました。
これに習い クリックした文字列を<TextTool>で使えるように「コピーする」
というものが出来ないかと思ったのです。
文字列をWクリックして、コピーすれば済む事ですが、Scriptでのコピーは
どのようになるのかを知りたいと思いました。

クリック下のものが 文字列かを見極め、<Len><Copy>を使うのでしょうか
最後に<SetTool:=-200>と考えたのですが
うまくいきません。
どなたか お教え下さい。宜しくお願い致します。