電子書籍の厳選無料作品が豊富!

AutoCAD 2006 を使っています。
JWCデータをDXF経由で読み込んでDWGとして最終的に保存したいんですが、jwcでは線色別に印刷線幅を決めて製図していたため、AutoCAD側でも同様の結果になるようにクイック選択で線幅を変更しています。例えば黄色線だけをクイック選択して線幅を0.15mmに変更しています。
jwcでは6色しか使用していないため、AutoCADで変更作業を6回繰り返せば終わることなんですが、もっと効率の良い方法はないでしょうか。
図面が200枚ほどあり、変更のし忘れなどが予想されるので、ある程度自動化できれば助かります。

余談ですが、使用できるソフトとしてはAutoCAD以外にHO_CAD、JWwin、BeDraw、IJCAD、BVCAD、DRA-CADなどがあります。

A 回答 (8件)

(defun sub (color width)


 (setq ss (ssget "X" (list (cons 62 color))))
 (setq num (sslength ss))
 (setq count1 0)
 (setq count2 0)
 (repeat num
  (setq ed (entget (ssname ss count1)))
(princ ed)
(princ "\n")
  (if (/= (assoc 370 ed) nil)
   (setq ed (subst (cons 370 width) (assoc 370 ed) ed))
   (progn
    (setq ed1 (cdr ed))
    (setq ed (car ed))
    (setq ed2 (car ed1))
    (setq ed1 (cdr ed1))
    (setq ed (append (list ed) (list ed2)))
    (setq num2 (length ed1))
    (repeat num2
     (setq ed2 (car ed1))
     (setq ed1 (cdr ed1))
     (setq ed (append ed (list ed2)))
     (if (= (car ed2) 62)
      (setq ed (append ed (list (cons 370 width))))
     )
    )
   )
  )
(princ ed)
(princ "\n")
  (if (/= (entmod ed) nil)
   (setq count2 (+ count2 1))
  )
  (setq count1 (+ count1 1))
 )
 (princ "color:")
 (princ color)
 (princ ", count:")
 (princ count2)
 (princ "/")
 (princ count1)
 (princ "\n")
)

(defun C:sample ()
 (sub 4 5)
 (sub 7 9)
 (sub 3 13)
 (sub 2 15)
 (sub 6 18)
 (sub 5 20)
 (princ)
)

久しぶりに作ってみたらすっかり忘れている・・・
途中、不細工な処理がありますが許して。
コマンド名・関数名・変数名・変数宣言・余分なprinc等は編集してください。
行頭全角スペースを入れてるけど大丈夫ですよね?
エラーになるなら半角スペースかタブにしてください。
AutoCAD2000では動作確認してます。
    • good
    • 0
この回答へのお礼

stingyさん、ありがとうございます。
即効性のあるLISPを作っていただき、本当に感謝しています。
待った甲斐がありました。
試行してみたらうまくいきました。
線の本数が多いと時間がかかるのはご愛敬として、とにかく本当に助かりました。

お礼日時:2008/07/04 15:21

JWCはあまりにも昔のことで忘れましたが、


JWWでもJwfファイルで色と印刷の線の太さが決まってくるので、
以前、人から受け継いだ仕事でJwfファイルが無く、苦労した覚えがあります。なので、印刷に関してはAutoCADもJWWも一緒のような気がしますが・・・

AutoCADで印刷する場合、印刷スタイルテーブルを”NONE”にしているならいいですが、それ以外の場合、線種の太さの設定を
「オブジェクトの線の太さを使用」に設定してないとダメなので、
結局、印刷スタイルテーブルを設定するのが懸命だと思います。


それでも!ってならば、スクリプトやマクロやLIPSなどを使って、
変更するのですが、私も gttaさんと同じくLT使いです。

今回の場合、Filter を使いますが、残念ながらスクリプトやマクロでは対応していません
こんなときは Acadremocon を使います。
また、200枚ぐらいあるとのことなので、私だったらエクセルVBAも使います。

Aのセルにファイルのフルパスが書かれていると仮定して
作りました。

ちょちょっと作ったのでエラー処理とかないですが、参考までに。
'--------------------------------------------

Dim acad As Object

Sub main()

Set acad = CreateObject("AcadRemocon.Body")

Dim filename As String

filename = "C:\drawing.dwg"

For i = 0 To 210
filename = Cells(i, 1).Value
If filename = "" Then End

acad.acPostCommand ("filedia ")
acad.acPostCommand ("0 ")
acad.acPostCommand ("open ")
acad.acPostCommand (Chr$(34) & filename & Chr$(34))
acad.acPostEnter

Call FliterColor

acad.acPostCommand ("qsave ")
acad.acPostCommand ("close ")

Next i

End Sub

Sub FliterColor() '

Set acad = CreateObject("AcadRemocon.Body")

'フィルターへ入力
acad.acSendCommand ("^C^C")
acad.acFilter "色", "=", "7"
acad.acSendCommand ("all ")

'線種の太さを変える
acad.acPostCommand ("^C^C_change p p lw 0.09 ")

End Sub
'--------------------------------------------------

とりあえず白の分だけですが、他の色の分とかエラー処理は
付け加えて下さい。
ちなみに「FliterColor()」の部分だけでも使えます。

私はペーパー空間やこのような拡張がないと仕事にならなく
なってきたので、AutoCADを手放せなくなりました(^_^;)
    • good
    • 0
この回答へのお礼

VBAを組んでいただき、ありがとうございます。
後半の
acad.acFilter "色", "=", "7"
の行でフィルターのダイアログが出て値が入るわけでもなく、あとは手動になってしまいました。
今回はstingyさん提案のAutoLISPでいくことにしました(即効性があったので)。
ありがとうございます。

お礼日時:2008/07/04 15:05

線色と印刷線幅が一対一で対応しているのなら、No.3さんが書かれているように、印刷スタイルテーブルで線色毎に線幅を選択しておくのが最も簡単だと思いますよ。

線自体に線幅情報を設定する必要はありません。

この回答への補足

アドバイスありがとうございます。
やはり印刷スタイルテーブルには頼りたくないです。
納品するCADデータの利用者は複数人かつ異動も絡んでくるので(要するに役所)、納めた成果品が2年後に「品質が悪い」と言われてしまっては次の受注につながりません。
次回の担当者(役所)がCAD初心者である可能性もあるわけですから。
私たちが手を動かせば達成できることですし、CAD製図基準(案)も線幅を持たせる仕様になっていますので、考え方としては間違っていないと思います。
これまでは発注者の使用ソフトがAutoCADなのでDWGで納品することになりましたが、いずれはSXFで納められるようにジリジリと誘導していきたいと思います。

補足日時:2008/07/04 14:43
    • good
    • 0
この回答へのお礼

今回はstingyさんご提案のAutoLISPを使うことにしました。
ありがとうございます。

そういえば、ctbについての補足なんですが、メールでDWGを送ってくる方は、ほとんどがカスタマイズしたctbを利用していますね。
でもメールにctbが添付されていたことは一度もないので、いつも不親切だなぁと思っています。
このことも、私がctbの有効利用に消極的な理由の一つです。

お礼日時:2008/07/04 15:18

No2です。


私はLT使いのため、Acadremoconなるソフト使っています。
http://www.kjufactory.com/

このスレッドの内容のものを少し改変すれば、できそうですね。
http://www.kjufactory.com/bbs/thread.asp?thread= …

レギュラーならLISPで同様のことができると思います。

AutoCADの標準は使えたものじゃありませんね。
カスタマイズすることを前提にしたCADなのでしょう。
カスタマイズすれば、手順が確率できることなら、どんなことでもできますから、こんな便利なCADはありません。

私もAutoCADの使い始めは文句たらたらでした。
カスタマイズし続けて1年もしたら、もう他のCADは使えません。
繰り返しの作業は全てオートマティック化して1ボタンでサササッと(笑)。

問題はバージョンアップにカスタマイズがついていけないこと。
未だにLT2004を使っています。
Autodeskさん、毎年のバージョンアップは止めてよ。・・・愚痴でした(謝)。
    • good
    • 0
この回答へのお礼

ご紹介のURLを覗いてみましたが、ゴールにたどりつくまで時間がかかりそうだったので、次の機会にじっくり見てみます。
今回はstingyさんのアドバイスしてくれた方法に即効性がありましたので、AutoLISPを使うことにしました。
ありがとうございます。

お礼日時:2008/07/04 15:01

#4です。

追加で・・・
寸法や複合図形の各要素の色には対応していませんので注意してください。
LISPでも対応できるはずだけど結構手間です。多分。
環境があればDXFに線幅情報追加するアプリを組むほうが楽。

JWWは使ったことないですが、DXF出力時のオプションにはないのかな?
(あれば質問しないか)

個人的にはctbファイルの使用のほうが好きなんだけどな。
    • good
    • 0

線の色で、印刷線幅は決まっているのでしょうか?


図面によって、線色が違うのであれば クイック選択の方法なんでしょうね。
線の色が図面別ですべて同じであれば、印刷設定ファイル(ctbファイル)で各色で線幅を設定すれば良いと思います。

設定方法は
 ファイル→印刷スタイル管理→追加ウィザード→テーブル表示 で
 線の太さを設定  です。

印刷するときに印刷スタイルテーブルで 作成した印刷スタイルを選べば良いと思います。
    • good
    • 0

画層分けはしていないのでしょうか。


画層で分かれていれば、画層プロパティで設定し、全てBYLAYERで書けば簡単なんですけどね。

線の太さも何種類もあるのでしょうか。
色の分だけやらなくても、最初に全部選択して一番多い太さにする。
その後に他の太さへ変更すれば、全部やらなくてもいいような。
けど、面倒には違いないですね。

どの色がどの太さかは決まっていますか。
なら、レギュラーのようなので、LISPででも組めば簡単にオートマティク化できますよ。
WEBで探せば、LISPのHPは多々あります。
探してみてはいかがでしょうか。

ちなみに私はLT使いですから、LISPは知りません(汗)。
LTだとLISPが使えないため、別の方法になりますが、できなくはないです。

この回答への補足

アドバイスありがとうございます。
画層分けはしていません。
それと線の太さは最高で6種類です。

どの色がどの太さかは決まっています。
水(cyan) 0.05mm
白(white) 0.09mm
緑(green) 0.13mm
黄(yellow) 0.15mm
紫(magenta) 0.18mm
青(blue) 0.20mm

WEBでLISPを探してみましたが、目的のものはなく、自分でイチから組むとなると時間がかかること間違いないので、もう少し情報を寄せてくれる人が出てくることに期待します。
ちょっとしたサンプルでもあれば改良して使えるようにしたいんですが。。。

グチになりますが、いろんなAutoCADって他のCADでは普通にできることが意外とできないことが多い気がするのは私だけでしょうか。
例えば連続印刷はHOCADの何十倍も時間がかかるし、とにかくいろんな面で他のCADの方が能率が良い気がします。。。。

補足日時:2008/07/03 10:40
    • good
    • 0

印刷スタイルテーブルの色従属の設定をすれば


図面に手を加えなくても再現することができます。
http://cad.main.jp/j2-class/06.htm

データのやり取りがある場合はこの印刷スタイルをファイルとして
渡す必要があります。

この回答への補足

アドバイスありがとうございます。
おっしゃる通りの方法があることはわかっていましたが、あくまでもDWGデータ単体で完結したいのです。
印刷スタイルをファイルとして渡し、さらに説明を付け加えるとなると、データを長期にわって引き継ぐ場合、人的ミスにより途中で情報が欠落してしまうからです。
ですから線1本1本に太さ情報を持たせて保存したいんです。
(SXFが理想ですが、AutoCADが標準機能としてSXFの入出力に対応していないので。。。)

補足日時:2008/07/02 13:09
    • good
    • 0
この回答へのお礼

今回はstingyさんのアドバイスを採用することにしました。
スタイルテーブルに関しては・・・他の回答者さんにコメントしたとおりです。

お礼日時:2008/07/04 15:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!