
 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なので結構、移行を
楽しんでいます。
今後ともよろしくお願いいたします

 編集