Đế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

#1641 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 28 February 2009 - 09:27 AM

chào các bạn, xin nhờ các bạn 1 việc. chả là thế này lần truớc mình có nhờ các bạn viết 1 lisp nối các đoạn thẳng liên tiếp nhau thành 1 PL và 1 cao thủ đã viết cho mình lisp này ( dùng rất tốt )



(defun c:nn (/ tdt ssdt sodt index)
(defun ObjName (ssdt /)
(cdr (assoc '0 (entget ssdt)))
)
(defun MoPL (ssdt /)
(= (cdr (assoc '70 (entget ssdt))) 0)
)
(defun NoiPL (ssdt /)
(if (MoPL ssdt)
(command ".PEDIT" ssdt "J" "All" "" "X")
)
)
(defun NoiLC (ssdt /)
(command ".PEDIT" ssdt "Y" "J" "All" "" "X")
)
(setq
tdt (ssget)
sodt (sslength tdt)
index 0
)
(repeat sodt
(setq
ssdt (ssname tdt index)
index (1+ index)
)
(if (or (= (Objname ssdt) "LWPOLYLINE")
(= (Objname ssdt) "POLYLINE")
)
(NoiPL ssdt)
)
(if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
(NoiLC ssdt)
)
)
(princ)
)





rưng mà có vấn đề nảy sinh như sau : cái lisp này nó sẽ nối tất tần tật các đoạn thẳng nào có liên hệ với đoạn thẳng mà mình chọn, trong khi đôi lúc mình chỉ muốn nối vài đuờng với nhau thôi ( các đuờng khác dù có tiếp theo thì cũng kô nối ) bình thường ra thì mình lại phải dùng PE,
mình nhờ các bạn sửa nó thành sao cho nó chỉ nối những đoạn thẳng mà mình chọn thôi, cảm ơn các bạn !
  • 0

#1642 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 28 February 2009 - 11:23 AM

Nhờ Bác giúp em về lisp tao Block của một kí hiệu nào đó, xin chọn và yêu cầu : đặt tên block và lưu vào thư mục như 1 file để dùng chung các bản vẽ khác,
Líp sưu tần như sau:

(defun c:tbl ()
(command "undo" "be")
(setq a (getpoint "\nChon diem thu nhat: "))
(setq b (getcorner a"\nChon diem thu hai: "))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq c (list (/ (+ (car a) (car :undecided:) 2) (/ (+ (cadr a) (cadr :cheers:) 2)))
(setq ten (getvar "dwgname"))
(setq so (strlen ten))
(setq so (- so 4))
(setq ten (substr ten 1 so))
(command "select" "W" a b "" "")
(command "block" ten c "p" "")
(setvar "osmode" luubatdiem)
(command "undo" "end")
(princ)
)

và ;;;

(defun c:mb()
(setq p1 (getpoint "\n Nhap diem thu nhat:")
p2 (getpoint "\n Nhap diem thu hai:")
p3 (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2))
)
(command "block" (getstring "\n Nhap ten block: ") p3 (ssget "w" p1 p2) "")
(princ)
)


Rất mong Bác giúp
  • 0

#1643 playboy2612

playboy2612

    biết vẽ pline

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

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

pác nào viết jùm em lisp để vẽ mặt cong tren autocad với.Em cần vẽ mặt cong với nmhiều bán kính khác nhau : VD vỏ ô tô hay thân tàu thuỷ... em vẽ trên cad3d khó quá.thanks các pác. Hoặc có cách nào đó chỉ jùm em!
  • 0
anh lặng lẽ một mình gọt rũa
rũa tim mình cho khớp với tim em !

#1644 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 28 February 2009 - 01:12 PM

Nhờ Bác giúp em về lisp tao Block của một kí hiệu nào đó, xin chọn và yêu cầu : đặt tên block và lưu vào thư mục như 1 file để dùng chung các bản vẽ khác,
Líp sưu tần như sau:

(defun c:tbl ()
(command "undo" "be")
(setq a (getpoint "\nChon diem thu nhat: "))
(setq b (getcorner a"\nChon diem thu hai: "))
(setq luubatdiem (getvar "osmode"))
(setvar "osmode" 0)
(setq c (list (/ (+ (car a) (car :undecided:) 2) (/ (+ (cadr a) (cadr :cheers:) 2)))
(setq ten (getvar "dwgname"))
(setq so (strlen ten))
(setq so (- so 4))
(setq ten (substr ten 1 so))
(command "select" "W" a b "" "")
(command "block" ten c "p" "")
(setvar "osmode" luubatdiem)
(command "undo" "end")
(princ)
)

và ;;;

(defun c:mb()
(setq p1 (getpoint "\n Nhap diem thu nhat:")
p2 (getpoint "\n Nhap diem thu hai:")
p3 (list (/ (+ (car p1) (car p2)) 2) (/ (+ (cadr p1) (cadr p2)) 2))
)
(command "block" (getstring "\n Nhap ten block: ") p3 (ssget "w" p1 p2) "")
(princ)
)
Rất mong Bác giúp


2 cái lisp bạn sưu tầm ở trên không đúng ý bạn ở chỗ nào?
Bạn hãy up ký hiệu muốn tạo block lên để mọi người tham khảo.
  • 0

#1645 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 28 February 2009 - 03:06 PM

Mình tính sử dụng các kí hiệu trong qui hoạch , qua líp để tạo các Block để chèn vào
Mong được Bạn giúp
file đây : http://www.cadviet.c...s/KHQH_04_1.rar
  • 0

#1646 tuan_thietkedien

tuan_thietkedien

    biết lệnh mirror

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

Đã gửi 28 February 2009 - 04:09 PM

Mình tính sử dụng các kí hiệu trong qui hoạch , qua líp để tạo các Block để chèn vào
Mong được Bạn giúp
file đây : http://www.cadviet.c...s/KHQH_04_1.rar


Bạn có thể dùng lệnh BLOCK để tạo block các kí hiệu này, không cần tới lisp đâu.
Bạn thử làm xem, nếu không được mình sẽ hướng dẫn.
  • 0

#1647 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 28 February 2009 - 04:47 PM

Mình dùng lệnh Block để tạo block, nó chỉ cho tách dụng trên 1 bản vẽ,
Làm thế nào sử dụng block đó với nhiều bản vẽ khác ?
  • 0

#1648 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 28 February 2009 - 05:03 PM

Mình dùng lệnh Block để tạo block, nó chỉ cho tách dụng trên 1 bản vẽ,
Làm thế nào sử dụng block đó với nhiều bản vẽ khác ?

Hãy sử dụng lệnh adcenter hoặc bấm tổ hợp phím Ctrol+2 -> Chọn Block -> Insert qua.
  • 0

#1649 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 28 February 2009 - 05:23 PM

vậy là mình phải chọn tất cả các block sang bản vẽ mới à
  • 0

#1650 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 01 March 2009 - 12:27 AM

chào các bạn, xin nhờ các bạn 1 việc. chả là thế này lần truớc mình có nhờ các bạn viết 1 lisp nối các đoạn thẳng liên tiếp nhau thành 1 PL và 1 cao thủ đã viết cho mình lisp này ( dùng rất tốt )
(defun c:nn (/ tdt ssdt sodt index)
(defun ObjName (ssdt /)
(cdr (assoc '0 (entget ssdt)))
)
(defun MoPL (ssdt /)
(= (cdr (assoc '70 (entget ssdt))) 0)
)
(defun NoiPL (ssdt /)
(if (MoPL ssdt)
(command ".PEDIT" ssdt "J" "All" "" "X")
)
)
(defun NoiLC (ssdt /)
(command ".PEDIT" ssdt "Y" "J" "All" "" "X")
)
(setq
tdt (ssget)
sodt (sslength tdt)
index 0
)
(repeat sodt
(setq
ssdt (ssname tdt index)
index (1+ index)
)
(if (or (= (Objname ssdt) "LWPOLYLINE")
(= (Objname ssdt) "POLYLINE")
)
(NoiPL ssdt)
)
(if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
(NoiLC ssdt)
)
)
(princ)
)
rưng mà có vấn đề nảy sinh như sau : cái lisp này nó sẽ nối tất tần tật các đoạn thẳng nào có liên hệ với đoạn thẳng mà mình chọn, trong khi đôi lúc mình chỉ muốn nối vài đuờng với nhau thôi ( các đuờng khác dù có tiếp theo thì cũng kô nối ) bình thường ra thì mình lại phải dùng PE,
mình nhờ các bạn sửa nó thành sao cho nó chỉ nối những đoạn thẳng mà mình chọn thôi, cảm ơn các bạn !

Chào bạn nguyenkhoadung98,
Bạn chỉ cần thay thế các tham số "All" "" "x" trong hàm Pedit bằng pause để trả quyền điều khiển cho cad là có thể chọn đối tượng thoải mái theo ý bạn thôi mà. Như vậy sau khi bạn đã nhập đủ các đoạn thẳng cần nối, bạn phải click chuột phải để thoát chọn giống như khi bạn thoát chọn đối tượng ban đầu, khi đó cad sẽ nối các đối tượng đã chọn với nhau nếu như chúng liền với nhau không có khoảng hở, đồng thời cad cũng yêu cầu bạn nhấn enter để kết thúc điều khiển của cad và trả về sự hoạt động của lisp.
Bạn hãy làm thử nhé.
Chúc bạn thành công.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1651 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 01 March 2009 - 12:49 AM

chào các bạn, xin nhờ các bạn 1 việc. chả là thế này lần truớc mình có nhờ các bạn viết 1 lisp nối các đoạn thẳng liên tiếp nhau thành 1 PL và 1 cao thủ đã viết cho mình lisp này ( dùng rất tốt )
(defun c:nn (/ tdt ssdt sodt index)
(defun ObjName (ssdt /)
(cdr (assoc '0 (entget ssdt)))
)
(defun MoPL (ssdt /)
(= (cdr (assoc '70 (entget ssdt))) 0)
)
(defun NoiPL (ssdt /)
(if (MoPL ssdt)
(command ".PEDIT" ssdt "J" "All" "" "X")
)
)
(defun NoiLC (ssdt /)
(command ".PEDIT" ssdt "Y" "J" "All" "" "X")
)
(setq
tdt (ssget)
sodt (sslength tdt)
index 0
)
(repeat sodt
(setq
ssdt (ssname tdt index)
index (1+ index)
)
(if (or (= (Objname ssdt) "LWPOLYLINE")
(= (Objname ssdt) "POLYLINE")
)
(NoiPL ssdt)
)
(if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))
(NoiLC ssdt)
)
)
(princ)
)
rưng mà có vấn đề nảy sinh như sau : cái lisp này nó sẽ nối tất tần tật các đoạn thẳng nào có liên hệ với đoạn thẳng mà mình chọn, trong khi đôi lúc mình chỉ muốn nối vài đuờng với nhau thôi ( các đuờng khác dù có tiếp theo thì cũng kô nối ) bình thường ra thì mình lại phải dùng PE,
mình nhờ các bạn sửa nó thành sao cho nó chỉ nối những đoạn thẳng mà mình chọn thôi, cảm ơn các bạn !


Bạn nguyenkhoadung98 ơi,
Sau khi mò mẫm mình thấy có cách khác hay hơn là bạn thay thế các tham số "all" "" "x" của lệnh pedit bằng các tham số tương úng như sau (ssget) "" "" và như vậy các dòng lệnh tương ứng sẽ là (command ".PEDIT" ssdt "J" (ssget) "" "") và (command ".PEDIT" ssdt "Y" "J" (ssget) "" "").
Như vậy sau khi bạn chọn các đối tượng cần nối , lisp sẽ tự động chạy luôn mà bạn không cần phải nhấn Enter nữa.

Thực ra theo thiển ý của mình thì cái lisp này chưa thực là tối ưu, có thể nên cải tiến lại chút nữa sẽ tốt hơn vì hiện tại nếu bạn chọn nhiều đối tượng cho biến tdt thì việc chọn các đối tượng cần nối sẽ rất dễ nhầm lẫn bạn ạ. Theo ý mình chỉ nên nối mỗi lần một bộ chọn rồi sau đó cho người dùng chọn tiếp có nối tiếp bộ chọn nữa hay không thì tốt hơn bạn ạ.

Bạn hãy thử xem nhé. Chúc bạn vui.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1652 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 01 March 2009 - 01:15 AM

vậy là mình phải chọn tất cả các block sang bản vẽ mới à

Mình nghĩ chắc là bạn chưa quen dùng DesignCenter hoặc ToolPalette.
- Nếu bạn ít sử dụng đến block này thì bạn chỉ cần copy nó rồi paste nó sang bản vẽ mới.
- Nếu thường sử dụng các ký hiệu này thì bạn nên dùng file KHQH_04 như một file thư viện chứa các block ký hiệu, bật DesignCenter (Ctrl+2) chọn thư mục chứa file thư viện-> file thư viện -> block. Muốn lấy cái nào thì kéo nó vào bản vẽ.
- Nếu bạn thường xuyên các ký hiệu này thì bạn bật ToolPalette ra (Ctrl+3), kéo con block đó từ DesignCenter vào ToolPalette, hoặc từ bản vẽ của bạn cũng được, cách đưa block vào ToolPalette cũng đơn giản thôi: Đầu tiên click chuột trái vào block, sau đó bấm giữ chuột trái và kéo vào ToolPalette .Tiếp đó kích phải chuôt vào block đó trên ToolPalette, chọn properties, kiểm tra scale; layer phù hợp với ý của mình chưa. Chèn block từ Toolpalette được định sẵn tỉ lệ, góc nghiêng, màu, layer.
- ToolPalette cũng có tác dụng đối với Hatch. Nếu bạn mệt mỏi khi dùng lệnh Hatch lại phải đặt lại từ đầu từ góc nghiêng cho đến tỉ lệ, đặc biệt nhiều cái đặt tỉ lệ nhỏ quá tô vào preview phải mất đến vài phút. Sử dụng ToolPalette sẽ giúp bạn khỏi cần nhớ góc nghiêng cũng như tỉ lệ hatch, kể cả layer. Đơn giản là bạn mở bản vẽ nào có mẫu hatch đã tô theo đúng ý muốn rồi, kiểm tra layer, cũng theo trình tự như làm với block kéo nó vào ToolPalette. Khi tô hatch từ ToolPalette sẽ đặt sẵn mẫu tô, tỉ lệ, góc nghiêng, màu, layer.
  • 0

#1653 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 01 March 2009 - 08:17 AM

Cám ơn Bạn đã giúp.
Mình mình đã đưa kí hiệu dạng điểm được rồi và sử dụng chung cho các bản vẽ. nếu gặp trường hợp cài Cad lại thì file này ta phải lưu thế nào ?
Riêng việc đưa Hatch vào mình chưa làm được mong được Bạn giúp hướng dẫn chi tiết thêm
nghĩa là mình tạo Hatch trước, tạo Block cho hatch đó, rồi bấm ctrl+2 và copy vào, xong bấm ctrl+3 đưa sang hatch mẫu. Đúng không bạn.
Mình làm không được
  • 0

#1654 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 01 March 2009 - 09:18 AM

Cám ơn Bạn đã giúp.
Mình mình đã đưa kí hiệu dạng điểm được rồi và sử dụng chung cho các bản vẽ. nếu gặp trường hợp cài Cad lại thì file này ta phải lưu thế nào ?
Riêng việc đưa Hatch vào mình chưa làm được mong được Bạn giúp hướng dẫn chi tiết thêm

- Rõ ràng là cần 1 file thư viện để khi cài lại Cad dễ tạo lại Toolpalette, lúc đó bạn chỉ cần vào bấm Ctrl+2, bấm vào file thư viện, chọn chức năng block rồi mở phím phải chuột sẽ có Creat Toolpalette, tất cả các block trong file đó sẽ chuyển sang 01 toolpalette mới. Còn nếu thấy làm như vậy vẫn phức tạp thì bạn lưu file acad.cui để dùng lại.
- Bất cứ một thứ gi hiện ra trên bản vẽ bạn đều có thể lôi nó vào Toolpalette, nhưng thường thì chỉ sử dụng block và hatch.
Chúc bạn vui.
  • 0

#1655 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 01 March 2009 - 10:03 AM

- Rõ ràng là cần 1 file thư viện để khi cài lại Cad dễ tạo lại Toolpalette, lúc đó bạn chỉ cần vào bấm Ctrl+2, bấm vào file thư viện, chọn chức năng block rồi mở phím phải chuột sẽ có Creat Toolpalette, tất cả các block trong file đó sẽ chuyển sang 01 toolpalette mới. Còn nếu thấy làm như vậy vẫn phức tạp thì bạn lưu file acad.cui để dùng lại.
- Bất cứ một thứ gi hiện ra trên bản vẽ bạn đều có thể lôi nó vào Toolpalette, nhưng thường thì chỉ sử dụng block và hatch.
Chúc bạn vui.

Xin nhờ Bạn giúp cho cách tạo Hatch
rất cám ơn
  • 0

#1656 phamthanhbinh

phamthanhbinh

    biết lệnh adcenter

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

Đã gửi 01 March 2009 - 10:23 AM

Xin nhờ Bạn giúp cho cách tạo Hatch
rất cám ơn

Xin lỗi bác Cuongtk2 và bác Dacvien2007,
Các bác nên chuyển các bài này về topic mẹo sử dụng Autocad có lẽ phù hợp hơn là đặt nó trong topic Autolisp này. Như vậy sẽ tốt hơn cho những người có cùng mối quan tâm vì dễ tìm kiếm và theo dõi.
Rất cám ơn các bác về các bài viết này.
  • 0
Chúc các quý Anh trên diễn đàn luôn khỏe, đẻ thêm được nhiều thứ để mót.

#1657 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 02 March 2009 - 07:35 AM

Nhờ bác Hoành viết giúp Em líp vẽ đuờng song song trong qui hoạch giao thông, Lisp yêu cầu xác định Độ rộng mặt đường, độ rộng vĩa hè ( lề đường ) . Khi chọn đường làm tim thì vẽ sang 2 bên thể hiện đường pline mặt đường và vĩa hè ở hai phía.
Rất mong được Bác giúp, Cám ơn.

  • 0

#1658 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 02 March 2009 - 10:26 AM

Bạn nguyenkhoadung98 ơi,
Sau khi mò mẫm mình thấy có cách khác hay hơn là bạn thay thế các tham số "all" "" "x" của lệnh pedit bằng các tham số tương úng như sau (ssget) "" "" và như vậy các dòng lệnh tương ứng sẽ là (command ".PEDIT" ssdt "J" (ssget) "" "") và (command ".PEDIT" ssdt "Y" "J" (ssget) "" "").
Như vậy sau khi bạn chọn các đối tượng cần nối , lisp sẽ tự động chạy luôn mà bạn không cần phải nhấn Enter nữa.

Thực ra theo thiển ý của mình thì cái lisp này chưa thực là tối ưu, có thể nên cải tiến lại chút nữa sẽ tốt hơn vì hiện tại nếu bạn chọn nhiều đối tượng cho biến tdt thì việc chọn các đối tượng cần nối sẽ rất dễ nhầm lẫn bạn ạ. Theo ý mình chỉ nên nối mỗi lần một bộ chọn rồi sau đó cho người dùng chọn tiếp có nối tiếp bộ chọn nữa hay không thì tốt hơn bạn ạ.

Bạn hãy thử xem nhé. Chúc bạn vui.


hè cảm ơn các bạn nhiều !
  • 0

#1659 cuongtk2

cuongtk2

    biết vẽ ellipse

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

Đã gửi 02 March 2009 - 11:25 AM

Nhờ bác Hoành viết giúp Em líp vẽ đuờng song song trong qui hoạch giao thông, Lisp yêu cầu xác định Độ rộng mặt đường, độ rộng vĩa hè ( lề đường ) . Khi chọn đường làm tim thì vẽ sang 2 bên thể hiện đường pline mặt đường và vĩa hè ở hai phía.
Rất mong được Bác giúp, Cám ơn.

Mạn phép bác Hoành cho em xin viết hộ đoạn code, lâu ngày ko viết lisp nên thấy ngứa tay:
- Lệnh OS1 giúp bạn chuyển pline về layer tim đường, offset ra 2 bên lòng đường và vỉa hè với layer tương ứng.
(defun c:os1 ( / ent p1 ent0 ent1)
(defun offsetgoc (ent1 p1 goc rong layer / p2 ent ent0)
(setq p2 (polar p1 (* pi goc) rong))
(command "offset" rong ent1 p2 "")
(setq ent (entlast)
ent0 (entget ent)
ent0 (subst (cons 8 layer) (assoc 8 ent0) ent0))
(entmod ent0)
(entupd ent))

(setq ent (entsel)
p1 (cadr ent)
ent1 (car ent)
longduong (getdist "\n Long duong rong:")
viahe (getdist "\nVia he rong:")
viahe (+ longduong viahe))
(setq p1 (trans p1 0 1))
(offsetgoc ent1 p1 0.5 longduong "long_duong")
(offsetgoc ent1 p1 1.5 longduong "long_duong")
(offsetgoc ent1 p1 0.5 viahe "via_he")
(offsetgoc ent1 p1 1.5 viahe "via_he")
(setq ent0 (entget ent1)
ent0 (subst (cons 8 "tim_duong") (assoc 8 ent0) ent0))
(entmod ent0)
(entupd ent1)
(command "ucs" "w")
)
  • 0

#1660 dacvien2007

dacvien2007

    biết vẽ polygon

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

Đã gửi 02 March 2009 - 12:15 PM

Ô.. Rất hay !!!
Xin chân thành cám ơn bạn.
Nhờ bạn phân dùm ra lớp giúp mình với : như lớp tim đường, lề đường và vĩa hè với màu khác nhau và lực nét khác nhau.

và nhờ bạn viết giúp Lisp xác định Chỉ giới Xây dựng: ví dụ như sau khi mình có 2 con đường, 1 rộng 10m lộ giới từ tim vào 15m thì vẽ đường chỉ giới xây dựng tính từ tim vào, con đường thứ 2 nối vào chỉ rộng 6m lộ giới là 10m. nhờ bạn lisp vẽ chĩ giới các đường đó. Yêu cầu xác định tim đường, nhập lộ giối, phiấ nào thì vẽ ra chỉ giới xây dựng của các đường đó.
Rất mong được bạn giúp

  • 0