• ベストアンサー

AutoCAD 線色ごとに線幅を統一

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

質問者が選んだベストアンサー

  • ベストアンサー
  • stingy
  • ベストアンサー率37% (144/379)
回答No.4

(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では動作確認してます。

tsun0707
質問者

お礼

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

その他の回答 (7)

  • macean
  • ベストアンサー率0% (0/3)
回答No.8

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を手放せなくなりました(^_^;)

tsun0707
質問者

お礼

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

回答No.7

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

tsun0707
質問者

お礼

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

tsun0707
質問者

補足

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

  • gtta
  • ベストアンサー率50% (92/181)
回答No.6

No2です。 私はLT使いのため、Acadremoconなるソフト使っています。 http://www.kjufactory.com/ このスレッドの内容のものを少し改変すれば、できそうですね。 http://www.kjufactory.com/bbs/thread.asp?thread=200411240000 レギュラーならLISPで同様のことができると思います。 AutoCADの標準は使えたものじゃありませんね。 カスタマイズすることを前提にしたCADなのでしょう。 カスタマイズすれば、手順が確率できることなら、どんなことでもできますから、こんな便利なCADはありません。 私もAutoCADの使い始めは文句たらたらでした。 カスタマイズし続けて1年もしたら、もう他のCADは使えません。 繰り返しの作業は全てオートマティック化して1ボタンでサササッと(笑)。 問題はバージョンアップにカスタマイズがついていけないこと。 未だにLT2004を使っています。 Autodeskさん、毎年のバージョンアップは止めてよ。・・・愚痴でした(謝)。

tsun0707
質問者

お礼

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

  • stingy
  • ベストアンサー率37% (144/379)
回答No.5

#4です。追加で・・・ 寸法や複合図形の各要素の色には対応していませんので注意してください。 LISPでも対応できるはずだけど結構手間です。多分。 環境があればDXFに線幅情報追加するアプリを組むほうが楽。 JWWは使ったことないですが、DXF出力時のオプションにはないのかな? (あれば質問しないか) 個人的にはctbファイルの使用のほうが好きなんだけどな。

  • aotyu
  • ベストアンサー率32% (131/399)
回答No.3

線の色で、印刷線幅は決まっているのでしょうか? 図面によって、線色が違うのであれば クイック選択の方法なんでしょうね。 線の色が図面別ですべて同じであれば、印刷設定ファイル(ctbファイル)で各色で線幅を設定すれば良いと思います。 設定方法は  ファイル→印刷スタイル管理→追加ウィザード→テーブル表示 で  線の太さを設定  です。 印刷するときに印刷スタイルテーブルで 作成した印刷スタイルを選べば良いと思います。

  • gtta
  • ベストアンサー率50% (92/181)
回答No.2

画層分けはしていないのでしょうか。 画層で分かれていれば、画層プロパティで設定し、全てBYLAYERで書けば簡単なんですけどね。 線の太さも何種類もあるのでしょうか。 色の分だけやらなくても、最初に全部選択して一番多い太さにする。 その後に他の太さへ変更すれば、全部やらなくてもいいような。 けど、面倒には違いないですね。 どの色がどの太さかは決まっていますか。 なら、レギュラーのようなので、LISPででも組めば簡単にオートマティク化できますよ。 WEBで探せば、LISPのHPは多々あります。 探してみてはいかがでしょうか。 ちなみに私はLT使いですから、LISPは知りません(汗)。 LTだとLISPが使えないため、別の方法になりますが、できなくはないです。

tsun0707
質問者

補足

アドバイスありがとうございます。 画層分けはしていません。 それと線の太さは最高で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の方が能率が良い気がします。。。。

  • saltmax
  • ベストアンサー率39% (2997/7598)
回答No.1

印刷スタイルテーブルの色従属の設定をすれば 図面に手を加えなくても再現することができます。 http://cad.main.jp/j2-class/06.htm データのやり取りがある場合はこの印刷スタイルをファイルとして 渡す必要があります。

tsun0707
質問者

お礼

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

tsun0707
質問者

補足

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

関連するQ&A

  • AutoCADの図面をHO_CADで開くとぐちゃぐちゃ?

    AutoCADで描いた図面のデータを先方に渡す際、 「うちにはAutoCAD無いからdxf形式で保存して」と言われたので拡張子をdxfにしてお渡ししました。 すると、「HO_CADで開いたら線とか数字読めないんだけど、どうにかならない?」と聞かれました。 線が重ならずにきれいに表示され、数字などの変更をHO_CADで行うようにするにはどうすればいいんでしょう? 何分CAD初心者なので、よく分かりません。 なにかアドバイス頂ければ幸いです。

  • ファイル形式をDWGからJWCへ変更する方法

    普段AutoCAD LT2006を使用しております。 データ納品先より、誰でも開くことが出来るようにと「jwc」データでの納品依頼がありました。 今まで「dxf」データでの納品はありましたが、「jwc」はありません。 「dwg」から「jwc」に一気に変換する方法がありましたら、教えてください。 試しに「dwg」から「dxf」に保存して、Jw_cadで開いてみたところ、文字・寸法は意外ときれいに出ましたが、文字・数字の位置が若干ずれております。また、ハッチングが出ないのと打ち出した図面の線の太さがAutoCADで設定したようになっておりませんでした。 (ハッチングはR14 DXF以降引き継がないとのことなので、R12 DXFで変換したらJw_cadでも表示されました。) よろしくお願いいたします。

  • DXFからJWに変換後、SXF対応拡張線色の線幅について

    お世話になります。 当方の環境 JW WIN 6.11 WindowsXP 当方のJWの理解レベル Auto CADメインで使用でJWをがんばってなんとか使っている最中 Auto CADで、例えばですがyellowが線幅20、grayが線幅10などと決めて書いています。 DXFにした場合でも色はほぼそのまま来るようです。 Auto CADのdwgをDXFにしてJWで読み込んだ場合同様に色がくるようです。 dwgは色に線幅を与えて印刷するように印刷スタイルで線幅を管理しているので線幅は 変換した場合全部同じ太さになります。 SXF対応拡張線色・線幅にチェックの入った状態のcyanやblueなどに変換され JWの基本色には変換されません。 SXF対応拡張線色・線幅の線に線幅を与えるのは 属性選択-指定【線色】指定-属性変更- <線幅>変更-線幅(1/100mm単位)0:基本幅(18)の後ろの四角に線幅の数字を入れる と線幅を与えられるのはわかるのですが、図面の枚数が多い時に単純作業ながら苦労します。 これ以外に何か方法はないのでしょうか? (例えば何かフリーのソフトを変換に使うなど。) よろしくお願いします。

  • AUTOCADで見たいのですが。

    現在AUTOCADLT2000iを使っています。お客様から図面の拡張子がDRWという図面をたくさんもらい。すぐにでも変換してAUTOCADのDWGまたはDXFで見たいのですが、DRWの図面を書いた会社がもうありません。すべて5インチですが、なんとかDRWをDXFかDWGに変換したいのですが、どなたかお助けいただけませんでしょうか。

  • AutoCAD2006による保存方法

    現在大学でCADの勉強をしておりますが、大学のソフトがAutoCADLT2000iでして、AutoCAD2006アカデミックによる旧バージョン図面形式、「AutoCAD2000/LT2000 図面」で保存ができると説明書に書かれていました。  実際に保存してみると2004図面(*.dwg)しかできないのです(AutoCAD 2000/LT2000 DXFはデフォルトで出てきました)。 AutoCAD2000/LT2000 図面(*.dwg)で保存するための設定方法などの解決策をご存知の方がいらっしゃいましたらお手数ですがお教授していただければ幸いです。なお、DWGコンバーターはアカデミックには対応していませんでした(制限で引っかかる)。

  • AUTOCADなしでDWGファイルをDXFの変換する方法を教えてください。

    AUTOCADが高価で購入できないため、図面のデータをdwgファイルでもらっても開く事ができません。 フリーソフトではDXF対応のCADソフトが多いと思うのですが、なんとかAUTOCADなしでdxfファイルに変換できるソフトなどはないでしょうか? またはdwgファイルを開く事ができ作図も出来るソフトなどもあったら教えて欲しいのですが。。 知っていましたらぜひご教授願います。宜しくお願いします。

  • AutoCAD2000 DXF=>DWGの変換方法

    AutoCAD2000 DXF=>DWGの変換方法についてお願いいたします. DXFファイルで受け取った図面をDWGに変換して貼り付ける方法をお願いいたします。 又 DWGで受け取った図面が一つの塊に成っている場合使用しない部分などを分解して削除出来ないためなぞって書いています。 いろいろ行って上手く出来る場合も有るのですがたどり付くまでなかなか進まないため、 出来たことを.次に再現できなくて困っています。                           よろしくお願いいたします。

  • 最速でファイル形式を「dwg」から「jwc」へ変換する方法

    200枚近くある図面を「dwg」から「jwc」へ変換するのですが、 まずDXF変換して、JW-cadで開いてみたところハッチングが飛んでました。 AutoCADの保存形式をR12にしたら、ハッチングも残るということなのですが、 そうなると作業として、 1ファイルに20枚ぐらい図面があるものもあるので、ファイル1枚1図面に分ける ↓ DXF変換する(この時にR12バージョンを選んで保存) ↓ JW-cadで開いて、jwc形式で保存する ということになり、数枚の図面ならいいんですが、 枚数が多いと結構な作業量になると思います。 そこで、「JacConvert」を使ってみようと思うのですが、 このソフトを使うと上記の作業が一気に出来るのでしょうか? また普段この作業をされている方で、他に効率の良い方法がありましたら、ご伝授ください。 フリーソフトのみで出来る方法があれば、有難いです。 ちなみに元データはAutoCAD LT2006で作図したものを、dwg2000形式で保存しております。 JW-cadは、普段使っておらずインストールしているだけです。 開く・保存・印刷が出来る程度なので、レイヤーの構成等全く分かっておりません。 よろしくお願いいたします。

  • CAD

    Auto cad のレイアウトに配置されている図面をDXFで保存する方法を教えてください。DWGで保存されているデータをDRA-CADで開くと、モデルに配置されているデータになり、図面内に収まりません。よろしくお願いします

  • AutoCAD図面をメールで送る方法

    はじめて質問します。AutoCAD初心者です。 かなり初歩的な質問だと思いますが・・・ 職場で他にCADに明るい方がいないので(+_+) どなたか教えて下さい!宜しくお願いします! ★先日AutoCAD2005で作成した図面(.dwg)をお客様にバージョンを落して(2000/LT2000 .dwg)で保存してメールで送ってくださいと言われ送りました。先方にデータは届いたものの・・・開くと文字化けしてしまうとのこと。 再び、先方から今度はdxfで保存して送って下さいと言われました。指示通りdxfで保存しました。ちゃんと開けるか不安でしたので、送る前に自分のPCでそのdxf図面を確認のため開いて見ると、『XRECORDの開始(行 582172)で、読み込み中にエラーが発生しました:DXFファイルの読み込みエラー 無効 または 不完全なDXFの入力です。-図面は破棄されました。続けるには[ENTER]キーを押して下さい:』とコマンドに表示が出てしまいました。やむなく[ENTER]キーを押して画面を消しました。何度繰り返しても同じ状況なのです。 ちなみに、dwg→dxfへ図面を保存すると、保存ボタンを押した後、『!AECオブジェクトを旧バージョンのファイル形式で保存することはできません。旧バージョンでは、ファイル形式やオブジェクト機能の変更による新バージョンでの変更を認識できないためです。プロキシ グラフィックが有効になっている場合、旧バージョンで表示 することはできますが、AECコマンドは使用できません。元のオーサリングアプリケーションの[AutoCADに書き出す]機能を使用して、この図面をAutoCAD専用のオブジェクトに保存することができます。□OKマーク』が警告画面みたいな形で出ます。これが問題になっているのでしょうか? AEC自体も何のことを言っているのか分らず・・・未だ解決できずです。 ※ちなみにお客様にはFAXでやりとりをさせて頂きました(*_*) 申し訳ありませんが、どなたか教えて下さい。宜しくお願い致します!!!