Chuyển đến nội dung
Diễn đàn CADViet
Đăng nhập để thực hiện theo  
prute

[Nhờ viết lisp] offset tự động

Các bài được khuyến nghị

Anh quá khen làm e sướng. Tất cả đều là những thứ mót lại từ các bác đi trước trên 4room thôi ^^

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

chào cả nhà. 

mình làm bên quy hoạch. muốn vẽ các đối tượng nhà thì mình offset từ vỉa hè vô. làm các các 4 hoặc 5 đối tượng thì được. gặp nhiều lô đất gần cả 100 đối tượng. nên em mong các bạn viết dùm mình 1 lisp để quét các đối tượng o ffset về 1 phía theo khoảng cách tùy chon.

( ccác li sp của anh hạ và anh ketxu mình có thử nhưng không làm được

mong các bạn giúp đỡ

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 21/6/2012 tại 11:34, Doan Van Ha đã nói:

Lisp offset tất cả các đối tượng kín được chọn vào phía bên trong đối tượng, với cùng 1 khoảng cách offset.

 


;Doan Van Ha - CADViet.com - Ngay 21/6/2012
;Muc dich: Offset tat ca doi tuong vao ben trong voi 1 khoang cach co dinh, va xoa tat ca doi tuong cu.
(defun C:HA ( / ss )
(vl-load-com) (command "undo" "be") (setq cmd (getvar "cmdecho") osm (getvar "osmode")) (setvar "cmdecho" 0) (setvar "osmode" 0)
(or *stp* (setq *stp* 10.0))
(setq stp (getint (strcat "\nKhoang cach Offset <" (rtos *stp* 2) ">: ")))
(if (not stp) (setq stp *stp*) (setq *stp* stp))
(princ "\nChon cac hinh kin can Offset...")
(setq ss (ssget '((0 . "CIRCLE,ELLIPSE,POLYLINE,LWPOLYLINE,SPLINE"))))
(foreach obj (HA:ss->vla ss)
 (command "offset" *stp* (vlax-vla-object->ename obj) (HA:CenCur obj) ""))
(command "erase" ss "")
(setvar "cmdecho" cmd) (setvar "osmode" osm) (command "undo" "end") (princ))
(defun HA:CenCur (obj / ttc)
(cond
 ((= (cdr (assoc 0 (entget (vlax-vla-object->ename obj)))) "REGION")
  (setq ttc (vlax-get obj 'Centroid)))
 ((wcmatch (cdr (assoc 0 (entget (vlax-vla-object->ename obj)))) "CIRCLE,ELLIPSE,POLYLINE,LWPOLYLINE,SPLINE")
  (setq ttc (vlax-get (car (vlax-invoke (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))) 'addregion (list obj))) 'Centroid))
  (entdel (entlast))))
ttc)
(defun HA:ss->vla (ss / i l)
(if ss
 (repeat (setq i (sslength ss))
  (setq l (cons (vlax-ename->vla-object (ssname ss (setq i (1- i)))) l)))))
 

 

bạn có thể đổi thành offset ra ngoài giúp mình được không. mình cần vẽ nét trát của tường nhanh. THanks

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay
Đăng nhập để thực hiện theo  

×