Chuyển đến nội dung
Diễn đàn CADViet

Readdy

Thành viên
  • Số lượng nội dung

    1
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi Readdy


  1. thiep, on Sep 4 2009, 16:40, said:Tuynh: Mình đưa file lên đây http://www.cadviet.c...iles/2/2d3d.dwg đường 2d poline có cao độ là 10, đường 3d poline có cao độ khác nhau tại các điểm point, bạn có lisp nào mà khi pick vào đường 2d poline thì tại các điểm point hiện cao độ cho mình nhập theo ý muốn và đường 2d poline chuyển thành 3d poline. Chào Tuynh, lisp sau đây, yêu cầu Bạn pick các node của polyline sẽ biến 2D polyline thành 3D polyline. Sau đó bạn tiếp tục thay đổi độ cao các node của 3d polyline ;;; Lisp thay doi do cao cac node cua POLYLINE ;;; copyright by Thiep 7/2009 ;;; yeu cau: cai dat day du Expresstools ;;;-------------------------- (defun DXF (code en) (cdr (assoc code (entget en)))) ;;;--------------------- (defun SAVE_MODE () (command "UCS" "W" "") (setq OLD_OSMODE (getvar "OSMODE") OLD_CECOLOR (getvar "CECOLOR") OLD_AUTOSNAP (getvar "AUTOSNAP") OLD_ORTHOMODE (getvar "ORTHOMODE") ) (setvar "cmdecho" 0) (setvar "plinegen" 1) ) (defun RESTORE () (setvar "osmode" OLD_OSMODE) (setvar "AUTOSNAP" OLD_AUTOSNAP) (setvar "ORTHOMODE" OLD_ORTHOMODE) (setvar "CECOLOR" OLD_CECOLOR) (setvar "cmdecho" 1) ) ;;;-------------------------- ;;;---------------------------------------- (defun 3DPoly (Lp *ModelSpace* / PntArr) (setq PntArr (vlax-make-safearray vlax-vbDouble (cons 0 (1- (length Lp))) ) ) (vlax-safearray-fill PntArr Lp) (vla-Add3Dpoly *ModelSpace* PntArr) ) ;;;----------------------------------- (vl-load-com) (defun c:3dp (/ ActDoc *Model* wp lwp Obj n pn pcl Pe lstP Elev lt lstN) (SAVE_MODE) (setvar "osmode" 1) (setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object)) *Model* (vla-get-ModelSpace ActDoc) ) (while (setq pn (getpoint "\nPick a point on Polyine: ")) (setq lwp (ssname (ssget pn) 0)) (redraw lwp 3) (setq heinode (getreal "\nEnter height of node: ") obj (vlax-ename->vla-object lwp) lstP (ACET-GEOM-VERTEX-LIST lwp) ) (if (eq (dxf 0 lwp) "LWPOLYLINE") (progn (setq Elev (vla-get-Elevation obj)) (setq lstN nil) (foreach lt lstP (if (and (eq (car lt) (car pn)) (eq (cadr lt) (cadr pn))) (setq lt (list (car lt) (cadr lt) heinode)) (setq lt (list (car lt) (cadr lt) Elev)) ) (setq lstN (append lt lstN)) ) (vla-update (3DPoly lstN *Model*)) (vla-delete obj) ) (progn (setq lstP (ACET-GEOM-VERTEX-LIST lwp)) (setq lstN nil) (foreach lt lstP (if (and (eq (car lt) (car pn)) (eq (cadr lt) (cadr pn))) (setq lt (list (car lt) (cadr lt) heinode)) ) (setq lstN (append lt lstN)) ) (vla-update (3DPoly lstN *Model*)) (vla-delete obj) ) ) ) (RESTORE) (princ "\nChuc cac ban vui ve! Thiep") (princ) ) Tuy nhiên, nếu bạn thay đổi 1 polyline có hàng 100 node thì nên dùng cách khác nhanh hơn: Dùng bảng kê tọa độ trong Excel đổi qua đuôi *.csv, sau đó xây dựng 1 3D polyline theo 1 lisp khác.
×