Đến nội dung


Hình ảnh
5 stars - based on 24598 reviews
- - - - -

Entmod Pline Theo Hình Dạng Của Pline Mẫu ( Vẫn Giữ Nguyên Entity Name)


  • Please log in to reply
15 replies to this topic

#1 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 10:35 AM

Em có muốn viết 1 lisp sửa Pline theo 1 pline mẫu nhưng vẫn giữ nguyên  Entity name (theo em hiểu thì thằng này giống IDobject)  của đối tượng sửa nhưng khả năng có hạn nên chưa thể viết được, Mong các anh giúp đỡ em.

 

Lý do:

Một số phần mềm thiết kế đường (NovA) quản lý đối tượng qua ID object. Em muốn sửa nhanh những đối tượng đó để không ảnh hưởng đến việc sử dụng phần mềm sau này.

32345708423_e9210a25f3.jpg

 

32315688674_c235b82a37.jpg

 

Sau khi tham khảo lisp của  bác Manh và bác Thai đã hoàn thành.

 

 (defun LM:LWVertices (e)
(if (setq e (member (assoc 10 e) e))
(cons (list (assoc 10 e) (assoc 40 e) (assoc 41 e) (assoc 42 e))
(LM:LWVertices (cdr e)))))
;;-----------------------------------
(defun c:mpl (/ e1 e2 h1 h2 l1 l2 z1 z2)
(if (and (setq e1 (car (entsel "\nPline goc de sao chep Vertex: ")))
(eq (cdr (assoc 0 (entget e1))) "LWPOLYLINE")
(setq e2 (car (entsel "\nPline can update Vertex: ")))
(if (= (cdr (assoc 0 (entget e2))) "POLYLINE")
(progn
(setq DKCV T PLSTLAST (getvar "PLINETYPE"))
(setvar "PLINETYPE" 1)
(vl-cmdf "convert" "P" "S" e2 "")
(setvar "PLINETYPE" PLSTLAST)
))
(eq (cdr (assoc 0 (entget e2))) "LWPOLYLINE"))
(progn (setq e1 (entget e1)
h1 (reverse (member (assoc 39 e1) (reverse e1)))
l1 (LM:LWVertices e1)
z1 (assoc 210 e1))
(setq e2 (entget e2)
h2 (reverse (member (assoc 39 e2) (reverse e2)))
l2 (LM:LWVertices e2)
z2 (assoc 210 e2))
(setq e2 (append h2 (mapcar 'car l1) (list z2))
e2 (subst (cons 90 (length l1)) (assoc 90 e2) e2))
(entmod e2)))
(princ))


  • 0

#2 Danh Cong

Danh Cong

    biết lệnh insert

  • Moderator
  • PipPipPipPipPipPip
  • 426 Bài viết
Điểm đánh giá: 96 (tàm tạm)

Đã gửi 28 February 2017 - 11:00 AM

Em có muốn viết 1 lisp sửa Pline theo 1 pline mẫu nhưng vẫn giữ nguyên  Entity name (theo em hiểu thì thằng này giống IDobject)  của đối tượng sửa nhưng khả năng có hạn nên chưa thể viết được, Mong các anh giúp đỡ em.

+ Vô khả thi. !!! 

" Khi một đối tượng mới được tạo ra, cơ sở dữ liệu của Auto Cad sẽ xuất hiện 1 Record để lưu trữ thông tin đối tượng. Mỗi đối tượng được gắn cho 1 mã đối tượng "Entity Name" riêng để quản lý"   ----> Không thể có tên mã Entity Name của bất kỳ đối tượng nào được trùng nhau !


  • 0

              *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#3 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 11:15 AM

+ Vô khả thi. !!! 

" Khi một đối tượng mới được tạo ra, cơ sở dữ liệu của Auto Cad sẽ xuất hiện 1 Record để lưu trữ thông tin đối tượng. Mỗi đối tượng được gắn cho 1 mã đối tượng "Entity Name" riêng để quản lý"   ----> Không thể có tên mã Entity Name của bất kỳ đối tượng nào được trùng nhau !

32346297103_1fbfd815f1_c.jpg

 

33161547865_7dedd975aa_c.jpg

 

 

Em đã thử thay đổi Vertex so sánh 2  Entity Name em thấy vẫn giống nhau mà. Cái này giống như việc pick diện tích và thay thế vào text diện tích trong nova, Nova vẫn nhận giá trị khi xuất bảng tổng hợp khối lượng.


  • 0

#4 quocmanh04tt

quocmanh04tt

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 797 Bài viết
Điểm đánh giá: 376 (khá)

Đã gửi 28 February 2017 - 11:30 AM

Làm được. Nhưng tại sao phải làm vậy?

(Ý là vài lệnh cad cũng làm được việc đó: copy, offset, ma...)


  • 0

#5 Bee

Bee

    biết dimradius

  • Members
  • PipPipPipPipPip
  • 316 Bài viết
Điểm đánh giá: 103 (tàm tạm)

Đã gửi 28 February 2017 - 11:32 AM

Em có muốn viết 1 lisp sửa Pline theo 1 pline mẫu nhưng vẫn giữ nguyên  Entity name (theo em hiểu thì thằng này giống IDobject)  của đối tượng sửa nhưng khả năng có hạn nên chưa thể viết được, Mong các anh giúp đỡ em.

 

32345708423_e9210a25f3.jpg

 

32315688674_c235b82a37.jpg

Sao phải giữ nguyên ID. Phức tạp hóa vấn đề nhỉ ? Offset thằng tím ra xong matchprop thằng xanh cho thằng mới là xong. ^_^


  • 0

#6 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 11:58 AM

Sao phải giữ nguyên ID. Phức tạp hóa vấn đề nhỉ ? Offset thằng tím ra xong matchprop thằng xanh cho thằng mới là xong. ^_^

Một số phần mềm thiết kế đường (NovA) quản lý đối tượng qua ID object. Em muốn sửa nhanh những đối tượng đó để không ảnh hưởng đến việc sử dụng phần mềm sau này.


  • 0

#7 Danh Cong

Danh Cong

    biết lệnh insert

  • Moderator
  • PipPipPipPipPipPip
  • 426 Bài viết
Điểm đánh giá: 96 (tàm tạm)

Đã gửi 28 February 2017 - 12:15 PM

32346297103_1fbfd815f1_c.jpg

 

33161547865_7dedd975aa_c.jpg

 

 

Em đã thử thay đổi Vertex so sánh 2  Entity Name em thấy vẫn giống nhau mà. Cái này giống như việc pick diện tích và thay thế vào text diện tích trong nova, Nova vẫn nhận giá trị khi xuất bảng tổng hợp khối lượng.

 

Ồ, mình xin lỗi. Mình đang hiểu lầm là bạn đang tạo ra đối tượng mới ( Trong khi bạn chỉ sửa lại đối tượng cũ  )..... Sorry nhé. 

Mình chưa thạo điều kiển Polyline với hàm Vla liên quan đến đỉnh Polyline. Nên bạn chờ các cao thủ khác giúp vậy . :) ( mình cũng chờ học mót )


  • 0

              *** Vô lo - Vô nghĩ - Vô sầu hận ***
*** Chẳng thương - Chẳng giận - Chẳng đau lòng ***


#8 quocmanh04tt

quocmanh04tt

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 797 Bài viết
Điểm đánh giá: 376 (khá)

Đã gửi 28 February 2017 - 12:44 PM

Không biết đối tượng của bạn là POLYLINE hay LWPOLYLINE

+ Với LWPOLYLINE:

Vì bạn có biết về lisp nên mình gợi ý hướng giải quyết thế này nhé!

- Entget pline gốc và pline cần thay đổi, ta có lst1 và lst2

- Các dxf liên quan đến vertex (VT) cần quan tâm:

  + 90 -> số lượng VT

  + 10 -> Tọa độ VT

  +  40, 41 -> Width

  + 42 -> Bulge tại VT

- Thay thế các dxf trên của lst1 vào lst2

- (entmod lst2) -> Ra kết quả, song đến đây thì pline cần thay đổi sẽ trùng lên pline gốc => nếu muốn làm gì tiếp thì tùy...


  • 0

#9 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 12:50 PM

Không biết đối tượng của bạn là POLYLINE hay LWPOLYLINE

+ Với LWPOLYLINE:

Vì bạn có biết về lisp nên mình gợi ý hướng giải quyết thế này nhé!

- Entget pline gốc và pline cần thay đổi, ta có lst1 và lst2

- Các dxf liên quan đến vertex (VT):

90 -> số lượng VT

 

 (defun c:e1 ( / Plsua Plmau SPLn)
(setq Plmau (entget (car (entsel "\nmoi ban chon Doi tuong mau :"))) )
(setq Plmau1 (cdr(assoc 90 Plmau)))
(setq Plsua (entget (car (entsel "\nmoi ban thay the :"))) )
(setq SPLn (subst (cons 90 Plmau1)(assoc 90 Plsua) Plsua))
(entmod SPLn))

Nó còn liên quan đến thằng cons 10 nhưng em vẫn chưa biết áp dung nó như thê nào.

Kiến thức em chỉ được bấy nhiêu thôi ạ. hix. mò mãi mà chưa ra được


  • 0

#10 quocmanh04tt

quocmanh04tt

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 797 Bài viết
Điểm đánh giá: 376 (khá)

Đã gửi 28 February 2017 - 01:04 PM

Bạn test thử nhé!
(defun LM:LWVertices (e)
(if (setq e (member (assoc 10 e) e))
(cons (list (assoc 10 e) (assoc 40 e) (assoc 41 e) (assoc 42 e))
(LM:LWVertices (cdr e)))))
;;-----------------------------------
(defun c:tt (/ e1 e2 h1 h2 l1 l2 z1 z2)
(if (and (setq e1 (car (entsel "\nPline goc de sao chep Vertex: ")))
(eq (cdr (assoc 0 (entget e1))) "LWPOLYLINE")
(setq e2 (car (entsel "\nPline can update Vertex: ")))
(eq (cdr (assoc 0 (entget e2))) "LWPOLYLINE"))
(progn (setq e1 (entget e1)
h1 (reverse (member (assoc 39 e1) (reverse e1)))
l1 (LM:LWVertices e1)
z1 (assoc 210 e1))
(setq e2 (entget e2)
h2 (reverse (member (assoc 39 e2) (reverse e2)))
l2 (LM:LWVertices e2)
z2 (assoc 210 e2))
(setq e2 (append h2 (mapcar 'car l1) (list z2))
e2 (subst (cons 90 (length l1)) (assoc 90 e2) e2))
(entmod e2)))
(princ))

  • 1

#11 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 01:09 PM

Bạn test thử nhé!

(defun LM:LWVertices (e)
(if (setq e (member (assoc 10 e) e))
(cons (list (assoc 10 e) (assoc 40 e) (assoc 41 e) (assoc 42 e))
(LM:LWVertices (cdr e)))))
;;-----------------------------------
(defun c:tt (/ e1 e2 h1 h2 l1 l2 z1 z2)
(if (and (setq e1 (car (entsel "\nPline goc de sao chep Vertex: ")))
(eq (cdr (assoc 0 (entget e1))) "LWPOLYLINE")
(setq e2 (car (entsel "\nPline can update Vertex: ")))
(eq (cdr (assoc 0 (entget e2))) "LWPOLYLINE"))
(progn (setq e1 (entget e1)
h1 (reverse (member (assoc 39 e1) (reverse e1)))
l1 (LM:LWVertices e1)
z1 (assoc 210 e1))
(setq e2 (entget e2)
h2 (reverse (member (assoc 39 e2) (reverse e2)))
l2 (LM:LWVertices e2)
z2 (assoc 210 e2))
(setq e2 (append h2 (mapcar 'car l1) (list z2))
e2 (subst (cons 90 (length l1)) (assoc 90 e2) e2))
(entmod e2)))
(princ))

Cám ơn bác. Quá chuẩn luôn. :))

===============================================

Tình hình là đối với nova đối tượng là 2D Polyline  ( Polyline  ) anh ạ.  Lisp mình chỉ áp dụng được cho LWPOLYLINE. 


  • 0

#12 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 01:36 PM

;;; Add vertext into Polyline and LWPolyline 2010 by Thaistreetz

(defun c:Adv (/ DKCV LST LSTPT N PL PL1 PLS PLSTLAST PT PTA WP)

(if (and (setq PL (car (entsel (TCVN3-Unicode " - Chän ®­êng Pline cÇn thªm ®Ønh ")))) (wcmatch (cdr (assoc 0 (entget PL))) "*POLYLINE"))

(progn

(vl-cmdf "undo" "begin")

(if (= (cdr (assoc 0 (entget PL))) "POLYLINE")

(progn

(setq DKCV T PLSTLAST (getvar "PLINETYPE"))

(setvar "PLINETYPE" 1)

(vl-cmdf "convert" "P" "S" PL "")

(setvar "PLINETYPE" PLSTLAST)

);progn

);if

(setq PLs (ssadd PL (ssadd)))

(while (progn

(sssetfirst nil PLs)

(initget 128 "u")

(setq PTa (getpoint (TCVN3-Unicode "\nPick ®Ønh cÇn thªm ")))

(if (= PTa "u") (progn (prompt "- Undo") (vl-cmdf "undo" "Back")) PTa))

(if (/= PTa "u")

(progn

(vl-cmdf "undo" "mark")

(setq PT (vlax-curve-getPointatParam PL (setq n (fix (vlax-curve-getParamatPoint PL (vlax-curve-getClosestPointto PL (setq PTa (trans PTa 1 0))))))))

(setq Lst nil)

(if (= n 0)

(progn

(setq Lstpt (reverse(acet-geom-pline-point-list PL nil))

PL1 (makeLWPolyline lstpt nil nil nil nil nil nil))

(if (= (fix (vlax-curve-getParamatPoint PL1 (vlax-curve-getClosestPointto PL1 PTa))) (- (length Lstpt) 1))

(mapcar '(lambda (x)

(setq Lst (if (equal x (list 10 (car PT) (cadr PT)) 0.0001)

(cons x (cons (list 10 (car PTa) (cadr PTa)) Lst))

(cons x Lst))))

(entget PL))

(mapcar '(lambda (x)

(setq Lst (if (equal x (list 10 (car PT) (cadr PT)) 0.0001)

(cons (list 10 (car PTa) (cadr PTa)) (cons x Lst))

(cons x Lst))))

(entget PL)))

(entdel PL1))

(mapcar '(lambda (x)

(setq Lst (if (equal x (list 10 (car PT) (cadr PT)) 0.0001)

(cons (list 10 (car PTa) (cadr PTa)) (cons x Lst))

(cons x Lst)))) (entget PL)))

(entmod (reverse Lst))))

);while

(sssetfirst)

(if DKCV (vl-cmdf "CONVERTPOLY" "H" wp "")))

(prompt (TCVN3-Unicode "\n§èi t­îng kh«ng ph¶i Polyline ")));if

(vl-cmdf "undo" "end")

(princ)

);end

;;; remove vertext into Polyline and LWPolyline

;;; copyright 2010 by Gia_Bach

;;; Edited 2010 by thaistreetz

(defun c:edv (/ removenth bulges coords ent idx param pt DKCV PLSTLAST)

(defun removenth (n lst / i rtn)

(setq i -1)

(foreach x lst (if (/= n (setq i (1+ i))) (setq rtn (cons x rtn))))

(reverse rtn))

(vl-cmdf "undo" "begin")

(while (progn

(initget 128 "u")

(setq ent (entsel (TCVN3-Unicode "\nChän ®Ønh Pline cÇn xãa: ")))

(if (= ent "u") (progn (prompt "- Undo") (vl-cmdf "undo" "Back")) ent))

(if (and (/= ent "u") (wcmatch (cdr (assoc 0 (entget (car ent)))) "*POLYLINE"))

(progn

(vl-cmdf "undo" "Mark")

(princ (setq pt (osnap (cadr ent) "near")))

(if (= (cdr (assoc 0 (entget (car ent)))) "POLYLINE")

(progn

(setq DKCV T PLSTLAST (getvar "PLINETYPE"))

(setvar "PLINETYPE" 1)

(vl-cmdf "convert" "P" "S" (car ent) "")

(setvar "PLINETYPE" PLSTLAST)))

(setq ent (vlax-ename->vla-object (car ent))

param (atoi (rtos (vlax-curve-getparamatpoint ent pt) 2 0))

coords (vlax-get ent 'coordinates) idx -1 bulges nil)

(repeat (/ (length coords) 2) (setq bulges (cons (vla-getbulge ent (setq idx (1+ idx))) bulges)))

(setq bulges (removenth param (reverse bulges)))

(repeat 2 (setq coords (removenth (* 2 param) coords)))

(vlax-put ent 'coordinates coords)

(setq idx -1)

(foreach bulge bulges (vla-setbulge ent (setq idx (1+ idx)) bulge))))

);while

(if DKCV (vl-cmdf "CONVERTPOLY" "H" ent ""))

(vl-cmdf "undo" "end")

(princ)

);end

(defun TCVN3-Unicode (stsua / index stdich chuht chusua tapsua)

(if (= (getvar "acadver") "16.1s (LMS Tech)") stsua (progn

(setq tapsua

(list (cons "µ" "\U+00E0")(cons "Ì" "\U+00E8")(cons "ß" "\U+00F2")(cons "ï" "\U+00F9")

(cons "¸" "\U+00E1")(cons "Ð" "\U+00E9")(cons "ã" "\U+00F3")(cons "ó" "\U+00FA")

(cons "¶" "\U+1EA3")(cons "Î" "\U+1EBB")(cons "á" "\U+1ECF")(cons "ñ" "\U+1EE7")

(cons "·" "\U+00E3")(cons "Ï" "\U+1EBD")(cons "â" "\U+00F5")(cons "ò" "\U+0169")

(cons "¹" "\U+1EA1")(cons "Ñ" "\U+1EB9")(cons "ä" "\U+1ECD")(cons "ô" "\U+1EE5")

(cons "©" "\U+00E2")(cons "ª" "\U+00EA")(cons "«" "\U+00F4")(cons "­" "\U+01B0")

(cons "Ç" "\U+1EA7")(cons "Ò" "\U+1EC1")(cons "å" "\U+1ED3")(cons "õ" "\U+1EEB")

(cons "Ê" "\U+1EA5")(cons "Õ" "\U+1EBF")(cons "è" "\U+1ED1")(cons "ø" "\U+1EE9")

(cons "È" "\U+1EA9")(cons "Ó" "\U+1EC3")(cons "æ" "\U+1ED5")(cons "ö" "\U+1EED")

(cons "É" "\U+1EAB")(cons "Ô" "\U+1EC5")(cons "ç" "\U+1ED7")(cons "÷" "\U+1EEF")

(cons "Ë" "\U+1EAD")(cons "Ö" "\U+1EC7")(cons "é" "\U+1ED9")(cons "ù" "\U+1EF1")

(cons "¨" "\U+0103")(cons "×" "\U+00EC")(cons "¬" "\U+01A1")(cons "ú" "\U+1EF3")

(cons "»" "\U+1EB1")(cons "Ý" "\U+00ED")(cons "ê" "\U+1EDD")(cons "ý" "\U+00FD")

(cons "¾" "\U+1EAF")(cons "Ø" "\U+1EC9")(cons "í" "\U+1EDB")(cons "û" "\U+1EF7")

(cons "¼" "\U+1EB3")(cons "Ü" "\U+0129")(cons "ë" "\U+1EDF")(cons "ü" "\U+1EF9")

(cons "½" "\U+1EB5")(cons "Þ" "\U+1ECB")(cons "ì" "\U+1EE1")(cons "þ" "\U+1EF5")

(cons "Æ" "\U+1EB7")(cons "®" "\U+0111")(cons "î" "\U+1EE3")(cons "¦" "\U+01AF")

(cons "¢" "\U+00C2")(cons "§" "\U+0110")(cons "¤" "\U+00D4")(cons "¥" "\U+01A0")

(cons "¡" "\U+0102")(cons "£" "\U+00CA")))

(setq index 1 stdich "")

(repeat (strlen stsua)

(setq chuht (substr stsua index 1)

index (1+ index)

chusua (cond ((assoc chuht tapsua) (cdr (assoc chuht tapsua))) (t chuht))

stdich (strcat stdich chusua)))

stdich)))

(defun MakeLWPolyline (listpoint closed Linetype LTScale Layer Color xdata / Lst)

(setq Lst (list '(0 . "LWPOLYLINE")'(100 . "AcDbEntity")

(cons 8 (if Layer Layer (getvar "Clayer")))

(cons 6 (if Linetype Linetype "bylayer"))

(cons 48 (if LTScale LTScale 1))

(cons 62 (if Color Color 256))

'(100 . "AcDbPolyline")

(cons 90 (length listpoint))

(cons 70 (if closed 1 0))))

(foreach PP listpoint (setq Lst (append Lst (list (cons 10 PP)))))

(if xdata (setq Lst (append lst (list (cons -3 (list xdata))))))

(entmakex Lst));end

 

 

Em đang tham khảo lisp của bác Thaistreetz nhưng chưa ra ngô khoai gì. :))

 

 

32348161093_7653eb33d2_b.jpg


  • 0

#13 quocmanh04tt

quocmanh04tt

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 797 Bài viết
Điểm đánh giá: 376 (khá)

Đã gửi 28 February 2017 - 04:18 PM

Polyline của bạn có khi nào có cung tròn không?


  • 0

#14 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 04:39 PM

Polyline của bạn có khi nào có cung tròn không?

http://www.cadviet.c..._file_mau_1.dwg

 

File mẫu của em đây ạ. ở trong em có viết 1 số ý kiến và nhận xét.


  • 0

#15 quocmanh04tt

quocmanh04tt

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 797 Bài viết
Điểm đánh giá: 376 (khá)

Đã gửi 28 February 2017 - 05:51 PM

Bạn dựa vào lisp của mình và Thaistreetz, và tiến hành như sau:

- Sau khi chọn được các pline và trước khi lấy tọa độ đỉnh, thằng nào POLYLINE thì Convert sang LWPOLYLINE

- Nếu cần trả về POLYLINE ban đầu thì trả sau khi entmod.

P/s:

- file bản vẽ của bạn, mình đoán phần mềm nó sử dụng Xdata chứ không phải quản lý Ename.

- Thử kiểm tra theo cách này nhé! Cái pline cần sửa, bạn thử Break 1 đoạn nhỏ, sau đó kiểm tra lại ename và chức năng phần mềm.

- Báo cáo kết quả nhé!


  • 1

#16 vodoifx

vodoifx

    biết vẽ line

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

Đã gửi 28 February 2017 - 09:19 PM

Bạn dựa vào lisp của mình và Thaistreetz, và tiến hành như sau:

- Sau khi chọn được các pline và trước khi lấy tọa độ đỉnh, thằng nào POLYLINE thì Convert sang LWPOLYLINE

- Nếu cần trả về POLYLINE ban đầu thì trả sau khi entmod.

P/s:

- file bản vẽ của bạn, mình đoán phần mềm nó sử dụng Xdata chứ không phải quản lý Ename.

- Thử kiểm tra theo cách này nhé! Cái pline cần sửa, bạn thử Break 1 đoạn nhỏ, sau đó kiểm tra lại ename và chức năng phần mềm.

- Báo cáo kết quả nhé!

tối về ăn cơm xong mới sủa được bác ạ.:)

Em đọc trên diễn đàn thấy các bác nói thằng Nova dùng Xdata, em Br pline thì nova ko nhận , dùng lisp mới sửa thì ok

 

 (defun LM:LWVertices (e)
(if (setq e (member (assoc 10 e) e))
(cons (list (assoc 10 e) (assoc 40 e) (assoc 41 e) (assoc 42 e))
(LM:LWVertices (cdr e)))))
;;-----------------------------------
(defun c:mpl (/ e1 e2 h1 h2 l1 l2 z1 z2)
(if (and (setq e1 (car (entsel "\nPline goc de sao chep Vertex: ")))
(eq (cdr (assoc 0 (entget e1))) "LWPOLYLINE")
(setq e2 (car (entsel "\nPline can update Vertex: ")))
(if (= (cdr (assoc 0 (entget e2))) "POLYLINE")
(progn
(setq DKCV T PLSTLAST (getvar "PLINETYPE"))
(setvar "PLINETYPE" 1)
(vl-cmdf "convert" "P" "S" e2 "")
(setvar "PLINETYPE" PLSTLAST)
))
(eq (cdr (assoc 0 (entget e2))) "LWPOLYLINE"))
(progn (setq e1 (entget e1)
h1 (reverse (member (assoc 39 e1) (reverse e1)))
l1 (LM:LWVertices e1)
z1 (assoc 210 e1))
(setq e2 (entget e2)
h2 (reverse (member (assoc 39 e2) (reverse e2)))
l2 (LM:LWVertices e2)
z2 (assoc 210 e2))
(setq e2 (append h2 (mapcar 'car l1) (list z2))
e2 (subst (cons 90 (length l1)) (assoc 90 e2) e2))
(entmod e2)))
(princ))


  • 0