
JDrafのポリライン編集はACADと仕様が違う

Re: ポリラインの頂点を追加する(lisp)
投稿日 |
: 2015/10/26(Mon) 10:54 |
投稿者 |
: アルサポ |
参照先 |
: |
実は、この仕様のおかげで今回紹介するLISPは、AutoCADでは便利に使えますが、
JDrafでは、「ポリライン」の時のみ使えるビミョーなLISPです。
ポリラインの頂点を追加するLISPは、追加したいポリラインを選択し、追加したい頂点位置を指示すると、
その頂点から一番近い頂点の隣に頂点が追加されます。
私は、意外と利用する事が多いので一度使ってみてはどうでしょうか?
;ポリラインの頂点を追加(※JDrafは2Dポリラインに強制的に変換されるので2回連続では使えない)
(defun C:PEditAdd (/ ent ent_data obj pt_add pt n m dis1 dis2 i)
(setq ent (nentsel "\nポリラインを選択"))
(setq ent_data (entget (car ent)))
(setq obj (assoc 0 ent_data))
(if (= (cdr obj) "LWPOLYLINE")
(progn
(setq pt_add (getpoint "\n追加する頂点を指示:"))
(setq pt (assoc 10 ent_data));頂点座標を取得
(setq n 0)
(setq m 0)
(setq dis1 (distance pt_add (cdr pt)))
(while pt
(setq dis2 (distance pt_add (cdr pt)));2点間距離
(if (> dis1 dis2)
(progn
(setq dis1 dis2)
(setq m n)
);progn
);if
(setq ent_data (cdr (member pt ent_data)))
(setq pt (assoc 10 ent_data));頂点座標を取得
(setq n (+ n 1))
);while
(command "PEDIT" ent "E")
(if (/= m 1)
(progn
(setq i 0)
(while (> m i)
(command "N")
(setq i (+ i 1))
);while
);progn
);if
(command "I" pt_add "X" "")
);progn
);if
(princ)
)

編集

Re: JDrafのポリライン編集はACADと仕様が違う
投稿日 |
: 2016/10/06(Thu) 17:55 |
投稿者 |
: 良春 |
参照先 |
: |
こんにちわ
最近JDrafをさわり出したものです。
上のLISPでLWPOLYLINEが2DPOLYLINEに変わってしまうのは PEDIT のせいのようです。
JDrafでは2DPOLYLINE用の編集コマンド EDITPOLYLINE と LWPOLYLINE 用の編集
コマンド EDITVERTEX があり、別名で PEDIT がEDITPOLYLINE になっていました。
LWPOLYLINE をEDITPOLYLINE で編集すると強制的に2DPOLYLINEになる仕様のようです。
上のLISPを EDITVERTEX に書き換えると、解決します。

編集

Re: JDrafのポリライン編集はACADと仕様が違う

Re: JDrafのポリライン編集はACADと仕様が違う
投稿日 |
: 2016/10/09(Sun) 10:30 |
投稿者 |
: 良春 |
参照先 |
: |
アルサポさん おはようございます。
私もAutoCADユーザーです。R2010で更新をやめています。
JDrafへの移行を検討中で、いろいろ検索してこちらへたどり着きました。
冒頭のLWPOLYLINEが2DPOLYLINEに変るという指摘に、実際確認して不便に
感じ、何か代替があるのではないかと考え、コマン解説を総当たりして
発見しました。
私も自作のLISPをJDrafに移行し、動作検証しながら環境づくりをしています。
JDrfはDISELがあまりうまく動かないので、LISPで作りなおしたりしている
過程で、AutoCADとの違いを実感しています。
たとえば引き出し線記入で仮文字を入力し、後から文字をGETVERの値に入れ替える場合、
AutoCADでは最後のエンティティは「文字」ですが、JDrafでは「引き出し線」になるので
結構手間になります。
他にもまだわからないことだらけですが、まだメインはAutoCADなので結構、移行を
楽しんでいます。
今後ともよろしくお願いいたします

編集