Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#21 vndesperados

vndesperados

    biết lệnh xref

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

Đã gửi 29 June 2007 - 09:20 AM

Các bác có ý tưởng nào hay mà không thể giải quyết thì đưa lên để mọi người cùng trao đổi hay học hỏi, cùng tìm hướng giải quyết chứ cứ viết rồi nhờ người khác kiểm tra "chính tả" thì không nên đâu. Với lại khi một chương trình chưa hòan chỉnh mà đưa lên và không nói rõ chức năng thì ai biết bạn muốn gì...

Mà công nhận trên này có bác NguyenHoanh hay thật, chịu khó trả lời và sữa lỗi chính tả cho anh em thế.
  • 0

#22 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 29 June 2007 - 10:03 AM

Các bác có ý tưởng nào hay mà không thể giải quyết thì đưa lên để mọi người cùng trao đổi hay học hỏi, cùng tìm hướng giải quyết chứ cứ viết rồi nhờ người khác kiểm tra "chính tả" thì không nên đâu. Với lại khi một chương trình chưa hòan chỉnh mà đưa lên và không nói rõ chức năng thì ai biết bạn muốn gì...

Mà công nhận trên này có bác NguyenHoanh hay thật, chịu khó trả lời và sữa lỗi chính tả cho anh em thế.


Chết thật! Do đang đọc phần lisp copy tăng nội dung text bên kia thấy có bác cần vẽ them cái vòng tròn cho Text nên mới viết con này nhưng lại gửi tại đây nên mới lạc loài như thế.
Công việc như sau:
Chọn một text mẫu.
Chọn các đối tượng bất kỳ muốn chép theo.
Chọn 1 điểm làm gốc.
Chọn các điểm khác.
Tác dụng như sau:
Copy text mẫu và các đối tượng chọn thêm tới các vị trí mới.
Thay đổi nội dung text thêm một giá trị. tất nhiên phần này thì không bằng của bác Nguyen Hoanh nhưng để đánh trục kt thì dùng được.
Vấn đề còn vướng:
Khi chọn các điểm tiếp theo thì làm ổn cả nhưng nếu muốn dừng lại thì phải bấm esc chứ nếu bấm enter thì cái text cuối cùng cứ tự động tăng giá trị miết.
Do ko rành lắm nên mới nhờ sửa, đừng bực mau già. hehehehehe.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#23 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 29 June 2007 - 12:00 PM

Có 2 điểm không chuẩn trong đoạn lisp trên của duy782006.

- Thứ nhất, vòng lặp while của bạn không có điều kiện thoát, vì vậy sẽ lặp vĩnh viễn. Bạn hãy move đoạn code (setq b (getpoint "\nChon diem dat moi: ")) vào ngay sau while.

- Thứ hai, bạn select 2 lần, copy 2 lần đối tượng text, như vậy là thừa. Bạn hãy xóa các dòng lệnh thừa đó:
(Prompt "\nChon cac doi tuong chep theo...")
(Setq CDT (Ssget))

(command "copy" CDT "" (list xa ya) (list xb yb))

Như vậy, code sẽ trở thành như sau:
(Defun C:ct ( )
(prompt "\nChon Text mau.")
(setq DTD (car (entsel)))
(setq DT (entget DTD))
(setq NDT (cdr (assoc 1 DT)))


(setq a (getpoint "\nChon diem lam chuan: "))
(setq xa (car a))
(setq ya (cadr a))

(while (setq b (getpoint "\nChon diem dat moi: "))
(luuos)
(setvar "osmode" 0)


(setq xb (car :s_dead:)
(setq yb (cadr :ph34r:)

(command "copy" DTD "" (list xa ya) (list xb yb))
(setq DTDM (entlast))

(if (and (>= (ascii NDT) 48) (<= (ascii NDT) 57))
(setq NDT (itoa (+ (atoi NDT) 1)))
(setq NDT (chr (+ (ascii NDT) 1)))
)

(setq Elist (entget DTDM))
(setq Oldlist (assoc 1 Elist))
(setq Oldtext (cdr Oldlist))
(setq Oldtext (strcase Oldtext nil))
(setq Newlist (cons '1 NDT))
(setq Elist (subst Newlist Oldlist Elist))
(entmod Elist)

(traos)
)

(Princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun luuos ()
(setq
DUY_OSMODE (getvar "OSMODE")
DUY_AUTOSNAP (getvar "AUTOSNAP")
DUY_LAYERHH (getvar "CLAYER")
DUY_THANGXEOHH (getvar "ORTHO")
DUY_filletrad (getvar "FILLETRAD")
DUY_TEXTSTYLE (getvar "TEXTSTYLE")
)
)
(defun traos ()
(if DUY_OSMODE
(setvar "OSMODE" DUY_OSMODE)
)
(if DUY_LAYERHH
(setvar "CLAYER" DUY_LAYERHH)
)
(if DUY_THANGXEOHH
(setvar "ORTHO" DUY_THANGXEOHH)
)
(if DUY_AUTOSNAP
(setvar "AUTOSNAP" DUY_AUTOSNAP)
)
(if DUY_filletrad
(setvar "FILLETRAD" DUY_filletrad)
)
(if DUY_TEXTSTYLE
(setvar "TEXTSTYLE" DUY_TEXTSTYLE)
)
)


Có thể mọi người ngạc nhiên tại sao tôi lại ngồi sửa từng lỗi lisp cho các thành viên? Rất dễ hiểu thôi, tôi cũng đã từng tự học lisp như các bạn. Khi đó chưa có mạng internet, không có chương trình visual lisp, không có ai để hỏi. Nhiều khi mắc một lỗi lisp tìm cả tháng mới biết cách khắc phục. Vì vậy, tôi rất hiểu mong muốn của mọi người khi post các bài thực hành lisp lên đây. Tôi đã và sẽ sửa tiếp như thế! He he!!!
  • 2

#24 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 29 June 2007 - 02:00 PM

Có 2 điểm không chuẩn trong đoạn lisp trên của duy782006.

- Thứ nhất, vòng lặp while của bạn không có điều kiện thoát, vì vậy sẽ lặp vĩnh viễn. Bạn hãy move đoạn code (setq b (getpoint "\nChon diem dat moi: ")) vào ngay sau while.

- Thứ hai, bạn select 2 lần, copy 2 lần đối tượng text, như vậy là thừa. Bạn hãy xóa các dòng lệnh thừa đó:
(Prompt "\nChon cac doi tuong chep theo...")
(Setq CDT (Ssget))

(command "copy" CDT "" (list xa ya) (list xb yb))

Như vậy, code sẽ trở thành như sau:

(Defun C:ct ( )
(prompt "\nChon Text mau.")
(setq DTD (car (entsel)))
(setq DT (entget DTD))
(setq NDT (cdr (assoc 1 DT)))
(setq a (getpoint "\nChon diem lam chuan: "))
(setq xa (car a))
(setq ya (cadr a))

(while (setq b (getpoint "\nChon diem dat moi: "))
(luuos)
(setvar "osmode" 0)
(setq xb (car :s_dead:)
(setq yb (cadr :ph34r:)

(command "copy" DTD "" (list xa ya) (list xb yb))
(setq DTDM (entlast))

(if (and (>= (ascii NDT) 48) (<= (ascii NDT) 57))
(setq NDT (itoa (+ (atoi NDT) 1)))
(setq NDT (chr (+ (ascii NDT) 1)))
)

(setq Elist (entget DTDM))
(setq Oldlist (assoc 1 Elist))
(setq Oldtext (cdr Oldlist))
(setq Oldtext (strcase Oldtext nil))
(setq Newlist (cons '1 NDT))
(setq Elist (subst Newlist Oldlist Elist))
(entmod Elist)

(traos)
)

(Princ)
)

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun luuos ()
(setq
DUY_OSMODE (getvar "OSMODE")
DUY_AUTOSNAP (getvar "AUTOSNAP")
DUY_LAYERHH (getvar "CLAYER")
DUY_THANGXEOHH (getvar "ORTHO")
DUY_filletrad (getvar "FILLETRAD")
DUY_TEXTSTYLE (getvar "TEXTSTYLE")
)
)
(defun traos ()
(if DUY_OSMODE
(setvar "OSMODE" DUY_OSMODE)
)
(if DUY_LAYERHH
(setvar "CLAYER" DUY_LAYERHH)
)
(if DUY_THANGXEOHH
(setvar "ORTHO" DUY_THANGXEOHH)
)
(if DUY_AUTOSNAP
(setvar "AUTOSNAP" DUY_AUTOSNAP)
)
(if DUY_filletrad
(setvar "FILLETRAD" DUY_filletrad)
)
(if DUY_TEXTSTYLE
(setvar "TEXTSTYLE" DUY_TEXTSTYLE)
)
)


Có thể mọi người ngạc nhiên tại sao tôi lại ngồi sửa từng lỗi lisp cho các thành viên? Rất dễ hiểu thôi, tôi cũng đã từng tự học lisp như các bạn. Khi đó chưa có mạng internet, không có chương trình visual lisp, không có ai để hỏi. Nhiều khi mắc một lỗi lisp tìm cả tháng mới biết cách khắc phục. Vì vậy, tôi rất hiểu mong muốn của mọi người khi post các bài thực hành lisp lên đây. Tôi đã và sẽ sửa tiếp như thế! He he!!!


Cám ơn bác nhưng cái (Prompt "\nChon cac doi tuong chep theo...") là để copy các đối tượng khác mà người dùng muốn copy theo (không phải là text vừa rồi) nên không phải là thừa. Ví dụ vẽ hoàn chỉnh phần đánh trục kích thước sau đó thì copy chọn text trước rồi chọn vòng tròn sau thì sẽ được vậy mà. Vậy là sai 1 lổi thôi nghen.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#25 xuanhai

xuanhai

    biết vẽ line

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

Đã gửi 03 July 2007 - 10:21 AM

Bác N Hoanh có thể viết 1 lisp này dùm mình được ko? Cám ơn trước nhé.
Sau khi load Số liệu nhập từ notepad, qua Cad chọn điểm gốc rồi Vẽ biểu đồ SPT và in ra luôn số liệu nhập.
Độ sâu (SPT) SPT1 SPT2 SPT3, số liệu dùng để vẽ SPT (Đường Line) là N30 = SPT2 + SPT3 và độ sâu.
Tỷ lệ bản vẽ trong Cad là 1/250.

Ví dụ như:
Độ sâu (SPT) SPT1 SPT2 SPT3
2.5 2 3 4
5.5 5 6 7
8.5 7 6 8
  • 0

#26 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 03 July 2007 - 01:42 PM

Bác N Hoanh có thể viết 1 lisp này dùm mình được ko? Cám ơn trước nhé.
Sau khi load Số liệu nhập từ notepad, qua Cad chọn điểm gốc rồi Vẽ biểu đồ SPT và in ra luôn số liệu nhập.
Độ sâu (SPT) SPT1 SPT2 SPT3, số liệu dùng để vẽ SPT (Đường Line) là N30 = SPT2 + SPT3 và độ sâu.
Tỷ lệ bản vẽ trong Cad là 1/250.

Ví dụ như:
Độ sâu (SPT) SPT1 SPT2 SPT3
2.5 2 3 4
5.5 5 6 7
8.5 7 6 8

Bạn upload 1 file CAD là kết quả của file text trên đi!
Tôi chưa hiểu kết quả cuối cùng bạn cần gì.
  • 0

#27 xuanhai

xuanhai

    biết vẽ line

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

Đã gửi 03 July 2007 - 02:54 PM

Gởi Bác N Hoanh. Mình đã upload file hinhtrukhoanmay.dwg lên rồi.
Bác xem rồi viết giùm nhé. thank
  • 0

#28 xuanhai

xuanhai

    biết vẽ line

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

Đã gửi 03 July 2007 - 03:43 PM

Gởi Bác N Hoanh. Mình đã upload file hinhtrukhoanmay.dwg lên rồi.
Bác xem rồi viết giùm nhé. thank

http://www.cadviet.com/upfiles/Hinhtrukhoanmay_1.dwg

Mình quên đườn dẫn. xin upload lại nha.
  • 0

#29 thanhlamct

thanhlamct

    biết lệnh offset

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

Đã gửi 03 July 2007 - 03:49 PM

Bác Hoành viết hộ em cái lisp cộng các giá trị của đường dim với, cộng cả các đường dim đã bị explode thì càng tốt. Thanks bác
  • 0

#30 kts.ngocquan

kts.ngocquan

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 36 (tàm tạm)

Đã gửi 03 July 2007 - 09:18 PM

Xin chaò các anh em !
Lâu rôì mơí có dịp để nhờ các cao thủ Auto Lips đây ,
1.Khi tôi vẽ hoặc chỉnh sưả bản vẽ cuả ngươì khác thi rất hay bị tình trạng CÁC ĐÔÍ TƯỢNG KHÔNG ĐỒNG PHẲNG, vâỵ anh em có thể cho tôi biết taị sao bị như thế , cách phòng chống hiện tượng đó và cách sưả các bản vẽ hhư thế ko ? (Tôi biết ở CAD có lệnh Flatten trong Express thì phaỉ .)
2.Anh em mình ai có lệnh nào tự động saveas bản vẽ trong 1 thơì gian định trước thì cho tôi xin luôn
Trước đay tôi có lệnh naỳ , cho nó autoload và nó tự động lưu theo định dạng Ten-ban-ve_ngay-gio nhưng mất tiêu rôì
Giúp tôi vơí nhé
  • 0

#31 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 04 July 2007 - 11:05 AM

1.Khi tôi vẽ hoặc chỉnh sưả bản vẽ cuả ngươì khác thi rất hay bị tình trạng CÁC ĐÔÍ TƯỢNG KHÔNG ĐỒNG PHẲNG, vâỵ anh em có thể cho tôi biết taị sao bị như thế , cách phòng chống hiện tượng đó và cách sưả các bản vẽ hhư thế ko ? (Tôi biết ở CAD có lệnh Flatten trong Express thì phaỉ .)


Có cái này hôm trước thấy trên diễn đàn này nhưng bây giờ ko nhớ chổ để chỉ cho bác. Mạn phép tác giả tôi đưa lại lên cho bác dùng. Lệnh là VE0 (về không) nhớ là số 0 chứ không phải chử 0.


(defun
c:ve0 ()
(defun suadinhPl(thongtin / index doituong doituongmoi
toado)
(setq
doituong (assoc '38 thongtin)
doituongmoi
(cons 38 0.)
)
(subst doituongmoi doituong
thongtin)
)
(defun suadinh (thongtin / index doituong
doituongmoi toado)
(setq thongtinmoi nil)
(foreach doituong
thongtin
(if (and (>= (car doituong) 10)
(<= (car
doituong) 36)
)
(setq doituongmoi
(list (car
doituong)
(cadr doituong)
(caddr
doituong)
0.0
)
)
(setq doituongmoi
doituong)
)
(setq thongtinmoi (append thongtinmoi (list
doituongmoi)))
)
(setq thongtinmoi thongtinmoi)
)
(defun
tendoituong (ssdt /)
(cdr (assoc '0 (entget
ssdt)))
)
;;---------------------------------------------
(setq
tapdoituong (ssget)
sodt (sslength tapdoituong)
index 0
ta
(chr 8)
stxoa (strcat ta ta ta ta ta ta ta ta ta ta ta ta ta ta
ta ta ta ta ta ta)
stxuly "Xu ly duoc: "
ptcu
nil
)
(repeat sodt
(setq
ssdt (ssname tapdoituong
index)
pt (* (/ (* index 1.0) sodt) 100.0)
index (1+
index)
)
(if (/= pt ptcu)
(progn
(princ (strcat stxoa
stxuly (rtos pt 2 0) "%"))
(setq ptcu pt)
)
)
(if (or
(= (tendoituong ssdt) "SPLINE")
(= (tendoituong ssdt) "LINE")

(= (tendoituong ssdt) "CIRCLE")
(= (tendoituong ssdt)
"ARC")
(= (tendoituong ssdt) "POLYLINE")
(= (tendoituong ssdt)
"ELLIPSE")
(= (tendoituong ssdt) "TEXT")
(= (tendoituong ssdt)
"DIMENSION")
(= (tendoituong ssdt) "ATTDEF")
(= (tendoituong
ssdt) "SOLID")
(= (tendoituong ssdt) "INSERT")
(= (tendoituong
ssdt) "ATTRIB")
(= (tendoituong ssdt)
"HATCH")
)
(progn
(setq thongtin (entget ssdt)
thongtin
(suadinh thongtin)
)
(entmod thongtin)
)
)
(if (=
(tendoituong ssdt) "LWPOLYLINE")
(progn
(setq thongtin (entget
ssdt)
thongtin (suadinhPL thongtin)
)
(entmod
thongtin)
)
)
(princ)
)
)





Còn vì sao mà cao độ không bằng nhau thì thường do các bác địa hình. Bản vẽ của các bác ấy có cao độ theo địa hình. Rồi anh em mình nhiều lấn sao chép. bắt điểm nên dính tùm lum.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#32 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 04 July 2007 - 11:10 AM

1.Khi tôi vẽ hoặc chỉnh sưả bản vẽ cuả ngươì khác thi rất hay bị tình trạng CÁC ĐÔÍ TƯỢNG KHÔNG ĐỒNG PHẲNG, vâỵ anh em có thể cho tôi biết taị sao bị như thế , cách phòng chống hiện tượng đó và cách sưả các bản vẽ hhư thế ko ? (Tôi biết ở CAD có lệnh Flatten trong Express thì phaỉ .)

dùng CAD thì như thế này
Command: change

Select objects:

Command:
CHANGE
Select objects: 1 found

Select objects:
Properties/<Change point>: p

Change what property (Color/Elev/LAyer/LType/ltScale/Thickness) ? *Cancel*

Command: *Cancel*

Command: *Cancel*

Command: *Cancel*

Command: *Cancel*

Command: change

Select objects: Other corner: 2 found

Select objects:
Properties/<Change point>: p

Change what property (Color/Elev/LAyer/LType/ltScale/Thickness) ? el

New elevation <0.0000>: 0.0

Change what property (Color/Elev/LAyer/LType/ltScale/Thickness) ?


Nhưng chỉ chỉnh được cho các đối tượng có cao độ các điểm khác 0 nhưng bằng nhau thôi. (nghĩa là đối tượng đó nằm trên 1 mặt pẳng ngang ) nhưng thường thì cao độ các điểm trong đối tượng bị khác nhau nên không hiệu quả.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#33 kts.ngocquan

kts.ngocquan

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 36 (tàm tạm)

Đã gửi 04 July 2007 - 05:48 PM

Cảm ơn duy782006 nhé
Nhưng tôi ko lấy lisp của bạn đc Nếu có thể bạn up file .lsp lên hộ tôi nhé
Cảm ơn
Thế còn tự đông saveas thì sao nhỉ
Có ai giúp tôi với

  • 0

#34 duy782006

duy782006

    PHẠM QUỐC DUY

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 2155 Bài viết
Điểm đánh giá: 1360 (rất tốt)

Đã gửi 05 July 2007 - 07:39 AM

Cảm ơn duy782006 nhé
Nhưng tôi ko lấy lisp của bạn đc Nếu có thể bạn up file .lsp lên hộ tôi nhé
Cảm ơn
Thế còn tự đông saveas thì sao nhỉ
Có ai giúp tôi với


Xin nhắc lại đây không khải là líp của em mà là trên CADVIET em load về.
Lần sau bác chịu khó tìm trên diễn đàn có chưa rồi hãy hỏi.
Vấn đề lấy lisp trong bài vừa rồi cũng đã có hướng dẩn trên diển đàn.Em nói lại như thế này.
Bác chọn toàn bộ nội dung lisp trong bài vừa rồi. copy dán vào trong msword rồi từ đây mới copy dán vào trong notepad và lưu lại dưới đuôi *.lisp.
Cứ nhắc lại mấy cái đã nói thế này có khi BQT lại giận thì gay.
  • 1

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#35 xaydung

xaydung

    biết lệnh trim

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

Đã gửi 05 July 2007 - 11:18 PM

Bạn có thể post yêu cầu về autolisp ở topic này.


anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không?
  • 0

#36 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 06 July 2007 - 08:12 AM

anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không?

Xin nói lại 1 chút: line không bao giờ có width, chỉ có pline mới có width.

Lệnh MA của các ACAD đời mới đều matchprop được cả bề dày (tôi đang sử dụng ACAD2007).
Bạn nên cài ACAD đời mới nhất. Vì nếu tắt các chức năng về hiển thị màu mè, mờ ảo, nó vẫn nhẹ như ACAD2000, nhưng nhiều tính năng mới hơn.
  • 0

#37 ssg

ssg

    biết lệnh adcenter

  • Vip
  • PipPipPipPipPipPipPip
  • 1228 Bài viết
Điểm đánh giá: 1087 (rất tốt)

Đã gửi 06 July 2007 - 08:28 AM

anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không?

Bạn dùng thử cái này. Lệnh là CTN, không phân biệt đời Acad, hoạt động y chang MA, chỉ có tác dụng với Width và chỉ với Pline (như bác Hoành đã nói).

;;;-------------------------------------------------------------
(defun getthick (e) (cdr (assoc 43 (entget e))))
;;;-------------------------------------------------------------
(defun setthick (e th)
(setq
data (entget e)
old (assoc 43 data)
new (cons 43 th)
)
(entmod (subst new old data))
)
;;;-------------------------------------------------------------
(defun C:CTN()
(setq th (getthick (car (entsel "\nSelect source object:"))))
(while (setq e (car (entsel "\nSelect destination object:")))
(if e (setthick e th))
)
)
;;;-------------------------------------------------------------
  • 0

#38 kts.ngocquan

kts.ngocquan

    biết vẽ ellipse

  • Members
  • PipPip
  • 59 Bài viết
Điểm đánh giá: 36 (tàm tạm)

Đã gửi 06 July 2007 - 11:22 AM

Bạn nên cài ACAD đời mới nhất. Vì nếu tắt các chức năng về hiển thị màu mè, mờ ảo, nó vẫn nhẹ như ACAD2000, nhưng nhiều tính năng mới hơn.

Cái này làm thế nào hả NH , có thể tạo thành 1 lisp rồi cho nó autoload ko ?
Nwếu đc bác cho xin nhé
Tôi cưỡi la già nhưng muốn phi như ngựa
Bác giúp tôi nhé
Thanks
  • 0

#39 thanhlamct

thanhlamct

    biết lệnh offset

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

Đã gửi 06 July 2007 - 01:38 PM

anh hoanh ơi , em đang cần 1 lisp giống như lệnh matchprop nhưng ở dạng sau: khi chọn 1 đừơng line đã có độ dày (width) và khi chọn đừơng khác thì những đường đó sẽ có độ dày đúng như độ dày của đường đích ban đầu, trong khi đó lệnh ma không làm được như thế, anh có thể giúp em được không?

Tôi có lisp này bạn xem co dùng dược không. dùng lệnh pw hay wp để thay đổi độ dày của đối tượng.
http://www.cadviet.com/upfiles/ChangeW.lsp
  • 0

#40 xaydung

xaydung

    biết lệnh trim

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

Đã gửi 06 July 2007 - 09:34 PM

cám ơn thanhlamct, tôi đã thử lisp của bác rùi nhưng có 1 vấn đề nảy sinh đó là : nếu chọn lại đường đó để thay 1 width khác thì lúc đó lisp mất tác dụng bác ạ (tức là chỉ có tác dụng 1 lần với đường đó thui), nhân tiện cám ơn bác Hoanh và ssg đã trả lời giúp tui.
  • 1