Đến nội dung


Hình ảnh
- - - - -

Hỏi cách chuyển đổi vị trí tọa độ đầu cuối của 1 polyline


  • Please log in to reply
29 replies to this topic

#21 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 11 February 2011 - 04:54 PM

Bác giabach hiểu sai ý của only rồi. Lám như của only là cách mình hay dùng:
-Vẽ 1 pline theo chiều mong muốn.
-Joint cái pline mới vào lipne cũ (chọn cái mới trước)thiì nó đảo chiều pline gốc của mình lại đương nhiên bị dính thèn mới vào.
-Bứt cái mới dính bỏ đi thì xong thủ tục.
Nói vậy không phải mình đồng ý với bạn only Có lisp giải quyết thì ngon hơn nhiều chứ.

Em nghĩ việc xoá 1 đối tuợng rồi thay thế nó bằng 1 đối tuợng mới là điều bất quá mới phải làm. truớc đây khi mới tập viết lisp em cũng hay tư duy theo cách này. Đặc biệt là đối với các đối tuợng do 1 số phần mềm tạo ra có chứa dữ liệu mở rộng trong cơ sở dữ liệu đối tuợng thì điều này là tuyệt đối cấm kỵ. thêm nữa cách làm như vậy cũng sẽ ảnh huởng rất lớn đến tốc độ của chuơng trình.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#22 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 11 February 2011 - 09:06 PM

Ui e search thì thấy quá trời luôn..Hầu như cũng dùng phương án Join hay sao ý nhỉ ^^
Kiểu như
Reverse
Hay
Reverse Simple
  • 2

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#23 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 15 February 2011 - 04:25 PM

Ban đầu
Hình đã gửi
Chuyền đổi
Hình đã gửi
Mục đích hoán đổi vị trí tọa độ của polyline theo chiều ngược lại nhưng vẩn giữ nguyên polyline ban đầu.
Bạn nào có list chuyển đổi thì giúp mình với nhé.

Èo không biết các bác biến đổi thế nào, nhưng 1 phần của 1 lsp của em đang viết có việc chuyển toạ độ đỉnh polyline không biết thế nào post lên các bác tham khảo và góp ý
(defun c:thu (/ C10 C40 C41 C42 C50 C70 CC40 CC41 CC42 DINH ENT ENT2 I N N10 N40 N41 N42 N50 N70 NC40 NC41 NC42 OSMODEC SS SSN SSN2 TEST0 TEST1 C11 N11)
(while (null(setq ss (entsel "\n Chon polyline: "))))
(setq osmodec (getvar "osmode"))
(setvar "osmode" 1)
(setq dinh (getpoint "\n Chon diem dau: "))
(setq ssn (car ss))
(setq ent (entget ssn))
(if (= (cdr(assoc 0 ent)) "POLYLINE")
(progn
(setq test1 (vlax-curve-getEndPoint ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq test0 (cdr(assoc 10 ent2)))
(if (equal dinh test1 0.00001)
(progn
(setq c42 (append c42 (list(cons 42 0))))
(setq c40 (append c40 (list(cons 40 0))))
(setq c41 (append c41 (list(cons 41 0))))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq c10 (append c10 (list(assoc 10 ent2))))
(setq c40 (append c40 (list(assoc 40 ent2))))
(setq c41 (append c41 (list(assoc 41 ent2))))
(setq c42 (append c42 (list(assoc 42 ent2))))
(setq c70 (append c70 (list(assoc 70 ent2))))
(setq c50 (append c50 (list(assoc 50 ent2))))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(setq n (- (length c42) 2))
(setq i 0)
(while (<= i n)
(setq nc42 (append nc42 (list(nth i c42))))
(setq nc40 (append nc40 (list(nth i c40))))
(setq nc41 (append nc41 (list(nth i c41))))
(setq i (1+ i))
);end while
(setq i 1)
(while (<= i n)
(setq cc42 (append cc42 (list(nth i c42))))
(setq cc41 (append cc41 (list(nth i c41))))
(setq cc40 (append cc40 (list(nth i c40))))
(setq i (1+ i))
);end while
(setq c42 nil c42 cc42 c41 nil c41 cc41 c40 nil c40 cc40)
(setq ss (ssget "_P"))
(setq ent (entget ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq i 0)
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq n10 (reverse c10))
(setq n40 (reverse nc40))
(setq n41 (reverse nc41))
(setq n42 (reverse nc42))
(setq n70 (reverse c70))
(setq n50 (reverse c50))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq ent2 (subst (nth i n10) (nth i c10) ent2))
(setq ent2 (subst (cons 40 (cdr(nth i n41))) (nth i c40) ent2))
(setq ent2 (subst (cons 41 (cdr(nth i n40))) (nth i c41) ent2))
(setq ent2 (subst (cons 42 (- 0 (cdr(nth i n42)))) (nth i c42) ent2))
(setq ent2 (subst (nth i n70) (nth i c70) ent2))
(setq ent2 (subst (nth i n50) (nth i c50) ent2))
(entmod ent2)
(setq i (1+ i))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(entupd ssn)
);end progn
);end if
);end progn
);end if
);end progn
);end if
);end progn
);end if
(if (= (cdr(assoc 0 ent)) "LINE")
(progn
(setq test0 (cdr(assoc 10 ent)))
(if (equal dinh test0 0.00001)
(progn
(setq c10 (assoc 10 ent))
(setq c11 (assoc 11 ent))
(setq n10 (assoc 11 ent))
(setq n11 (assoc 10 ent))
(setq ent (subst (cons 10 (cdr n10)) c10 ent))
(setq ent (subst (cons 11 (cdr n11)) c11 ent))
(entmod ent)
(entupd ssn)
);end progn
);end if
);end progn
);end if
(if (= (cdr(assoc 0 ent)) "ARC")
(progn
(vl-cmdf "pedit" ss "y" "")
(if (= (cdr(assoc 0 ent)) "POLYLINE")
(progn
(setq test1 (vlax-curve-getEndPoint ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq test0 (cdr(assoc 10 ent2)))
(if (equal dinh test1 0.00001)
(progn
(setq c42 (append c42 (list(cons 42 0))))
(setq c40 (append c40 (list(cons 40 0))))
(setq c41 (append c41 (list(cons 41 0))))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq c10 (append c10 (list(assoc 10 ent2))))
(setq c40 (append c40 (list(assoc 40 ent2))))
(setq c41 (append c41 (list(assoc 41 ent2))))
(setq c42 (append c42 (list(assoc 42 ent2))))
(setq c70 (append c70 (list(assoc 70 ent2))))
(setq c50 (append c50 (list(assoc 50 ent2))))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(setq n (- (length c42) 2))
(setq i 0)
(while (<= i n)
(setq nc42 (append nc42 (list(nth i c42))))
(setq nc40 (append nc40 (list(nth i c40))))
(setq nc41 (append nc41 (list(nth i c41))))
(setq i (1+ i))
);end while
(setq i 1)
(while (<= i n)
(setq cc42 (append cc42 (list(nth i c42))))
(setq cc41 (append cc41 (list(nth i c41))))
(setq cc40 (append cc40 (list(nth i c40))))
(setq i (1+ i))
);end while
(setq c42 nil c42 cc42 c41 nil c41 cc41 c40 nil c40 cc40)
(setq ss (ssget "_P"))
(setq ent (entget ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq i 0)
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq n10 (reverse c10))
(setq n40 (reverse nc40))
(setq n41 (reverse nc41))
(setq n42 (reverse nc42))
(setq n70 (reverse c70))
(setq n50 (reverse c50))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq ent2 (subst (nth i n10) (nth i c10) ent2))
(setq ent2 (subst (cons 40 (cdr(nth i n41))) (nth i c40) ent2))
(setq ent2 (subst (cons 41 (cdr(nth i n40))) (nth i c41) ent2))
(setq ent2 (subst (cons 42 (- 0 (cdr(nth i n42)))) (nth i c42) ent2))
(setq ent2 (subst (nth i n70) (nth i c70) ent2))
(setq ent2 (subst (nth i n50) (nth i c50) ent2))
(entmod ent2)
(setq i (1+ i))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(entupd ssn)
);end progn
);end if
);end progn
);end if
);end progn
);end if
);end progn
);end if
);end progn
);end if
(setvar "osmode" osmodec)
(princ)
)
Các bác chạy thủ rồi cho em ý kiến nhé.
PS: Lsp của em đổi được LINE, ARC, POLYLINE giữ nguyên đặc tính ví dụ như polyline chia 2 đoạn 1 đoạn có width 1 đoạn không thì không xi nhê vẫn đẹp đẽ. ^_^ chúc các bác mần tốt.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#24 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3805 (đỉnh cao)

Đã gửi 15 February 2011 - 05:08 PM

Èo không biết các bác biến đổi thế nào, nhưng 1 phần của 1 lsp của em đang viết có việc chuyển toạ độ đỉnh polyline không biết thế nào post lên các bác tham khảo và góp ý Các bác chạy thủ rồi cho em ý kiến nhé.
PS: Lsp của em đổi được LINE, ARC, POLYLINE giữ nguyên đặc tính ví dụ như polyline chia 2 đoạn 1 đoạn có width 1 đoạn không thì không xi nhê vẫn đẹp đẽ. ^_^ chúc các bác mần tốt.

Lisp của bạn chưa đổi được LWPOLYLINE
(if (= (cdr(assoc 0 ent)) "POLYLINE")
(progn
.......
Với PLINE kín thì có biết đâu được đâu là điểm đầu bạn?
Sử dụng Properties mới biết được thôi
Với PLINE kín, Lisp đổi được 1 lần duy nhất rồi trơ trơ,
  • 1

#25 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 16 February 2011 - 09:12 AM

Lisp của bạn chưa đổi được LWPOLYLINE
(if (= (cdr(assoc 0 ent)) "POLYLINE")
(progn
.......
Với PLINE kín thì có biết đâu được đâu là điểm đầu bạn?
Sử dụng Properties mới biết được thôi
Với PLINE kín, Lisp đổi được 1 lần duy nhất rồi trơ trơ,

Gửi bác TUE_NV, em đã chỉnh lại để PLINE khép kín chạy ầm ầm còn về phần LWPOLYLINE thì em không hay dùng và nói cách khác em chưa biết cách lấy dữ liệu của LWpolyline bác ví dụ cho em 1 đoạn lsp lấy giá trị của lwpolyline (VD lấy toạ độ điểm các đỉnh LWPOLYLINE) mong bác chỉ dùm
(defun c:thu (/ C10 C40 C41 C42 C50 C70 CC40 CC41 CC42 DINH ENT ENT2 I N N10 N40 N41 N42 N50 N70 NC40 NC41 NC42 OSMODEC SS SSN SSN2 TEST0 TEST1 C11 N11)
(while (null(setq ss (entsel "\n Chon polyline: "))))
(setq osmodec (getvar "osmode"))
(setvar "osmode" 1)
(setq dinh (getpoint "\n Chon diem dau: "))
(setq ssn (car ss))
(setq ent (entget ssn))
(if (= (cdr(assoc 0 ent)) "POLYLINE")
(progn
(setq test1 (vlax-curve-getEndPoint ssn))
(setq test2 (vlax-curve-getStartPoint ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq test0 (cdr(assoc 10 ent2)))
(if (or(equal dinh test1 0.00001)(equal test1 test2))
(progn
(setq c42 (append c42 (list(cons 42 0))))
(setq c40 (append c40 (list(cons 40 0))))
(setq c41 (append c41 (list(cons 41 0))))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq c10 (append c10 (list(assoc 10 ent2))))
(setq c40 (append c40 (list(assoc 40 ent2))))
(setq c41 (append c41 (list(assoc 41 ent2))))
(setq c42 (append c42 (list(assoc 42 ent2))))
(setq c70 (append c70 (list(assoc 70 ent2))))
(setq c50 (append c50 (list(assoc 50 ent2))))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(setq n (- (length c42) 2))
(setq i 0)
(while (<= i n)
(setq nc42 (append nc42 (list(nth i c42))))
(setq nc40 (append nc40 (list(nth i c40))))
(setq nc41 (append nc41 (list(nth i c41))))
(setq i (1+ i))
);end while
(setq i 1)
(while (<= i n)
(setq cc42 (append cc42 (list(nth i c42))))
(setq cc41 (append cc41 (list(nth i c41))))
(setq cc40 (append cc40 (list(nth i c40))))
(setq i (1+ i))
);end while
(setq c42 nil c42 cc42 c41 nil c41 cc41 c40 nil c40 cc40)
(setq ss (ssget "_P"))
(setq ent (entget ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq i 0)
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq n10 (reverse c10))
(setq n40 (reverse nc40))
(setq n41 (reverse nc41))
(setq n42 (reverse nc42))
(setq n70 (reverse c70))
(setq n50 (reverse c50))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq ent2 (subst (nth i n10) (nth i c10) ent2))
(setq ent2 (subst (cons 40 (cdr(nth i n41))) (nth i c40) ent2))
(setq ent2 (subst (cons 41 (cdr(nth i n40))) (nth i c41) ent2))
(setq ent2 (subst (cons 42 (- 0 (cdr(nth i n42)))) (nth i c42) ent2))
(setq ent2 (subst (nth i n70) (nth i c70) ent2))
(setq ent2 (subst (nth i n50) (nth i c50) ent2))
(entmod ent2)
(setq i (1+ i))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(entupd ssn)
);end progn
);end if
);end progn
);end if
);end progn
);end if
);end progn
);end if
(if (= (cdr(assoc 0 ent)) "LINE")
(progn
(setq test0 (cdr(assoc 10 ent)))
(if (equal dinh test0 0.00001)
(progn
(setq c10 (assoc 10 ent))
(setq c11 (assoc 11 ent))
(setq n10 (assoc 11 ent))
(setq n11 (assoc 10 ent))
(setq ent (subst (cons 10 (cdr n10)) c10 ent))
(setq ent (subst (cons 11 (cdr n11)) c11 ent))
(entmod ent)
(entupd ssn)
);end progn
);end if
);end progn
);end if
(if (= (cdr(assoc 0 ent)) "ARC")
(progn
(vl-cmdf "pedit" ss "y" "")
(if (= (cdr(assoc 0 ent)) "POLYLINE")
(progn
(setq test1 (vlax-curve-getEndPoint ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq test0 (cdr(assoc 10 ent2)))
(if (equal dinh test1 0.00001)
(progn
(setq c42 (append c42 (list(cons 42 0))))
(setq c40 (append c40 (list(cons 40 0))))
(setq c41 (append c41 (list(cons 41 0))))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq c10 (append c10 (list(assoc 10 ent2))))
(setq c40 (append c40 (list(assoc 40 ent2))))
(setq c41 (append c41 (list(assoc 41 ent2))))
(setq c42 (append c42 (list(assoc 42 ent2))))
(setq c70 (append c70 (list(assoc 70 ent2))))
(setq c50 (append c50 (list(assoc 50 ent2))))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(setq n (- (length c42) 2))
(setq i 0)
(while (<= i n)
(setq nc42 (append nc42 (list(nth i c42))))
(setq nc40 (append nc40 (list(nth i c40))))
(setq nc41 (append nc41 (list(nth i c41))))
(setq i (1+ i))
);end while
(setq i 1)
(while (<= i n)
(setq cc42 (append cc42 (list(nth i c42))))
(setq cc41 (append cc41 (list(nth i c41))))
(setq cc40 (append cc40 (list(nth i c40))))
(setq i (1+ i))
);end while
(setq c42 nil c42 cc42 c41 nil c41 cc41 c40 nil c40 cc40)
(setq ss (ssget "_P"))
(setq ent (entget ssn))
(if (=(cdr(assoc 66 ent)) 1)
(progn
(setq i 0)
(setq ssn2 (entnext ssn))
(setq ent2 (entget ssn2))
(setq n10 (reverse c10))
(setq n40 (reverse nc40))
(setq n41 (reverse nc41))
(setq n42 (reverse nc42))
(setq n70 (reverse c70))
(setq n50 (reverse c50))
(While(/= (cdr(assoc 0 ent2)) "SEQEND")
(setq ent2 (subst (nth i n10) (nth i c10) ent2))
(setq ent2 (subst (cons 40 (cdr(nth i n41))) (nth i c40) ent2))
(setq ent2 (subst (cons 41 (cdr(nth i n40))) (nth i c41) ent2))
(setq ent2 (subst (cons 42 (- 0 (cdr(nth i n42)))) (nth i c42) ent2))
(setq ent2 (subst (nth i n70) (nth i c70) ent2))
(setq ent2 (subst (nth i n50) (nth i c50) ent2))
(entmod ent2)
(setq i (1+ i))
(setq ssn2 (entnext ssn2))
(setq ent2 (entget ssn2))
);end while
(entupd ssn)
);end progn
);end if
);end progn
);end if
);end progn
);end if
);end progn
);end if
);end progn
);end if
(setvar "osmode" osmodec)
(princ)
)

  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#26 elleHCSC

elleHCSC

    biết lệnh copy

  • Members
  • PipPipPip
  • 119 Bài viết
Điểm đánh giá: 98 (tàm tạm)

Đã gửi 16 February 2011 - 09:56 AM

1 đoạn lsp lấy giá trị của lwpolyline (VD lấy toạ độ điểm các đỉnh LWPOLYLINE) mong bác chỉ dùm


Xem thêm đoạn code Getvert của bác SSG nhé :

(defun GetVert (e / i L CL k x LL) ;;;Return list Point of all vertex from pline e
(vl-load-com)
(setq i 0 k 0 L nil)
(setq CL (ent_close e))
(if (= CL 1)
(setq k (fix (+ (vlax-curve-getEndParam e) 1)))
(setq k (fix (+ (vlax-curve-getEndParam e) 2)))
)
(repeat k
(setq L (append L (list (vlax-curve-getPointAtParam e i))))
(setq i (1+ i))
)
(foreach x L (if (/= x nil) (setq LL (append LL (list x)))) )
LL
);
(defun ent_close (e / cl sp ep x_ep x_sp y_ep y_sp) ;Return integer value (0 or 1)
(vl-load-com)
(setq
sp (vlax-curve-getStartPoint e)
ep (vlax-curve-getEndPoint e)
x_sp (cadr sp) y_sp (car sp)
x_ep (cadr ep) y_ep (car ep)
)
(if (and (= x_sp x_ep) (= y_sp y_ep))
(setq cl 1) ;=1 is Close
(setq cl 0)
)
);

  • 0
Share for all, all will share !

--------------------
HTTP://WWW.HCSC.VN
HTTP://WWW.HCSC.COM.VN

#27 18011985

18011985

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 255 Bài viết
Điểm đánh giá: 61 (tàm tạm)

Đã gửi 16 February 2011 - 10:29 AM

Xem thêm đoạn code Getvert của bác SSG nhé :

Cảm ơn pác nhưng pác ui ý em hỏi ở đây lấy toạ độ điểm của đỉnh và lấy luôn dxf 40, 41, 42 của đỉnh đấy luôn có được k?
VD POLYLINE
((-1 . <Entity name: 7c51eea8>) (0 . POLYLINE) (330 . <Entity name:
7ec89338>) (5 . 1086ED) (100 . AcDbEntity) (67 . 1) (410 . A3) (8 . 0) (62 .
150) (100 . AcDb2dPolyline) (66 . 1) (10 0.0 0.0 0.0) (70 . 0) (40 . 0.0) (41 .
0.0) (210 0.0 0.0 1.0) (71 . 0) (72 . 0) (73 . 0) (74 . 0) (75 . 0))
Thì sau mỗi lần next của dxf 66 ta lấy được giá trị 1 điểm.
Nhưng còn với LWPOLYLINE
((-1 . <Entity name: 7c51eef8>) (0 . LWPOLYLINE) (330 . <Entity
name: 7ec89338>) (5 . 1086F7) (100 . AcDbEntity) (67 . 1) (410 . A3) (8 . 0)
(62 . 150) (100 . AcDbPolyline) (90 . 8) (70 . 1) (43 . 0.0) (38 . 0.0) (39 .
0.0) (10 -615769.0 -189154.0) (40 . 0.0) (41 . 0.0) (42 . -0.414214) (10
-615764.0 -189149.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10 -615523.0 -189149.0)
(40 . 0.0) (41 . 0.0) (42 . -0.414214) (10 -615518.0 -189154.0) (40 . 0.0) (41
. 0.0) (42 . 0.0) (10 -615518.0 -189393.0) (40 . 0.0) (41 . 0.0) (42 .
-0.414214) (10 -615523.0 -189398.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (10
-615764.0 -189398.0) (40 . 0.0) (41 . 0.0) (42 . -0.414214) (10 -615769.0
-189393.0) (40 . 0.0) (41 . 0.0) (42 . 0.0) (210 0.0 0.0 1.0))
Thì điểm chỉ cho 3 giá trị dxf 10 40 41 42 thì lấy ra kiểu chi.
Mong các pác chỉ cho em.
  • 0
Trăng 16 trăng tròn
Em 16 bụng ... như trăng

Hướng dẫn sử dụng diễn đàn:
Để cảm ơn hay bài viết có ích: Ấn dấu + cuối bài.
Không vừa lòng hay bài spam: Ấn dấu - cuối bài.

#28 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5685 Bài viết
Điểm đánh giá: 2606 (tuyệt vời)

Đã gửi 16 February 2011 - 11:18 AM

Sao bác không list các list 10 (point),40 (Swidth),41(Ewidth),42 (bugle) thành 4 list riêng biệt trong cùng 1 vòng lặp thì nó sẽ có tính tương ứng ?Lúc xử lý thì lấy nth i của cả 4 list
Ví dụ ntn :

(defun c:ex()
(vl-load-com)
(defun loc (lst vl /) (setq lst(mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) vl)) lst))))
(setq ent (entget(car(entsel)));CHon LWLPolyline
lst10 (loc ent 10)
lst40 (loc ent 40)
lst41 (loc ent 41)
lst42 (loc ent 42)
))

  • 1

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#29 Skywings

Skywings

    biết lệnh erase

  • Members
  • PipPipPip
  • 102 Bài viết
Điểm đánh giá: 46 (tàm tạm)

Đã gửi 07 April 2011 - 03:49 PM

Mình thì hay dùng cách đơn giản này: gõ lệnh PEDIT -> Reverse
Tùy chọn này hình như bắt đầu xuất hiện từ AutoCAD 2010, bản 2007 hông thấy, 2008-2009 chưa dùng nên hog bít ^^ !
  • 1

#30 colombus

colombus

    biết vẽ ellipse

  • Members
  • PipPip
  • 58 Bài viết
Điểm đánh giá: 3 (bình thường)

Đã gửi 13 April 2015 - 01:47 PM

Mong các bác viết lisp vấn đề này có thể áp dụng cho multiline (mline). Tôi vẽ mline cây thép hình V (justify = zero, đường tim của nó cách mép là 2 hai khoảng khác nhau). Mỗi lần muốn đổi chiều thì phải đổi scale của nó từ + sang - (ví dụ 1 phải đổi thành -1) , khi chưa có lisp thì phải làm thế thôi. Nhưng có lisp thì sẽ nhanh hơn nhiều. Xin cảm ơn!


  • 0