Chuyển đến nội dung chính

Lisp rải đối tượng theo đơờng dẩn. - CADViet forum


*Lâu nay dùng cái MEASURE và DIVIDE của cad thấy có vài hạn chế:
-Chỉ rải được point và block.
-Block thỉ phải gỏ tên và được chèn ra với tỉ lệ 1/1.
-Bỏ qua không chèn vào vị trí xuất phát của đường dẩn.
*Dựa trên cái lisp xác định điểm của bác SSG cho mình cải tạo và nhập chung thành 1 lệnh tác dụng tương đương và cải thiện các nhược điểm mình nêu trên: (à nghe bảo cad12 đã kết hợp array theo đường dẩn nhưng mình chưa tiếp xúc nên ko biết có bị dẩm lên đó ko nhưng đây là thử nghiệm vì mình tính cho xác định điểm bắt đầu và hướng rải nửa nhưng chưa nghỉ ra kịch bản vì có quá nhiều thường hợp muốn)
-Tên lệnh: RDT (rải đối tượng)
-Hỏi chọn đối tượng muốn rải: Bạn chọn thoải mái bằng các kiểu (đối tượng gì cũng được) kết thúc chọn bằng enter.
+Nếu bạn chọn hơn 1 đối tượng thì sẽ hỏi bạn chọn điểm chuẩn cho nhóm đối tượng này (dùng để làm điểm đặt trên đường dẩn í).
+Nếu bạn chọn 1 đối tượng thì sẽ xem nếu đối tượng không phải là block thì vẩn hỏi chọn điểm chuẩn, Nếu đối tượng là block thì bỏ qua phần hỏi chọn điểm chuẩn mà lấy điểm chèn của block đó làm điểm chuẩn.
-Hỏi chọn đường dẩn dùng để rải.
-Hỏi “Kieu rai theo: So luong/” :
+Rải theo số lượng thì nhập S enter.
+Rải theo khoảng cách thì nhập K enter hoặc enter không (thực chất cứ nhập vào khác S thì nhận là khoảng cách).
-Tùy theo lựa chọn mà hỏi khoảng cách rải hay số lượng rải.
-Hỏi“Co quay doi tuong vuong goc voi duong dan khong: Khong/") :
+Không quay đối tượng cho vuông gó với đường dẩn thì nhập K enter.
+Có quay thì nhập C en ter hoặc enter không (thực chất cứ nhập vào khác K thì nhận là có).
*Xong rồi. Bác nào có nhu cầu thì dùng không có thì dòm. Mong không ném đá hoặc dè bỉu. :P

file: rdt.lsp
(Defun c:rdt (/ ss) (command "undo" "be") (chonnhomdoituong) (choncuver) (hoikieurai) (command "undo" "end") (princ) ) ;;;;;;;;;;;;;;;;; (Defun chonnhomdoituong () (princ "\nChon doi tuong rai:") (setq ss (ssget)) (cond ((= ss nil) (princ "\nChua chon duoc doi tuong nao:") (chonnhomdoituong)) ((/= ss nil) (setq dsl (sslength ss)) (cond ((= dsl 1) (setq doituong (ssname SS 0)) (setq doituong (entget doituong)) (setq KIEUDOITUONG (cdr (assoc 0 doituong))) (cond ((= KIEUDOITUONG "INSERT") (setq dc (cdr (assoc 10 doituong)))) ((/= KIEUDOITUONG "INSERT") (setq dc (getpoint "\nChon diem goc: "))) );ketthuccondxemblock );kethucdsl1 ((/= dsl 1) (setq dc (getpoint "\nChon diem goc: "))) );ketthuccondnho );ketthucsetqdsl );ketthuccondtong (princ) ) ;;;;;;;;;;;;;;;;; (Defun choncuver () (setq ddd (entsel "\nChon duong dan:")) (while (or (null ddd) (or (= "TEXT" (cdr (assoc 0 (entget (car ddd))))) (= "MTEXT" (cdr (assoc 0 (entget (car ddd))))) (= "HATCH" (cdr (assoc 0 (entget (car ddd))))) (= "INSERT" (cdr (assoc 0 (entget (car ddd))))) (= "REGION" (cdr (assoc 0 (entget (car ddd))))) (= "DIMENSION" (cdr (assoc 0 (entget (car ddd))))) ) ) (setq ddd (entsel "\nDoi tuong khong the lam duong dan! Chon lai")) ) (setq chondd (car ddd)) (setq luubatdiem (getvar "osmode")) (setvar "osmode" 0) (setq chieudaicuver (vlax-curve-getDistAtParam chondd (vlax-curve-getEndParam chondd))) (setq diemdau (vlax-curve-getPointAtDist chondd 0)) (setq diemcuoi (vlax-curve-getPointAtDist chondd chieudaicuver)) (setvar "osmode"luubatdiem) (princ) ) ;;;;;;;;;;;;;;;;; (Defun hoikieurai (/ kieurai) (setq krai (strcase (getstring "\nKieu rai theo: So luong/"))) (Cond ((= krai "S") (raisoluong)) ((/= krai "S")(raikhoangcach)) ) (princ) ) ;;;;;;;;;;;;;; (Defun raikhoangcach () (setq chieudaidoan (GETDIST "\nKhoang cach doan chia: ")) (setq sol (+ (/ chieudaicuver chieudaidoan) 1)) (setq sl (fix sol)) (setq sl (fix sl)) (thuchienrai) (princ) ) ;;;;;;;;;;;;;; (Defun raisoluong () (setq slc (getreal "\nChia duong dan thanh may lan:")) (setq chieudaidoan (/ chieudaicuver slc)) (setq sl (fix (+ 1 slc))) (thuchienrai) (princ) ) ;;;;;;;;;;;;;; (Defun thuchienrai (/ quaykhong) (setq quaykhong (strcase (getstring "\nCo quay doi tuong vuong goc voi duong dan khong: Khong/"))) (Cond ((= quaykhong "K") (setq copygiua copykoquay)) ((/= quaykhong "K")(setq copygiua copyquay)) ) (setq index -1) (repeat sl (setq index (1+ index)) (setq d2 (* chieudaidoan index)) (setq luubatdiem (getvar "osmode")) (setvar "osmode" 0) (setq p2 (vlax-curve-getPointAtDist chondd d2)) (setvar "osmode"luubatdiem) (copygiua) ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;; (defun copycuoiquay() (setq luubatdiem (getvar "osmode")) (setvar "osmode" 0) (setq d5 (- chieudaicuver 0.001)) (setq p5 (vlax-curve-getPointAtDist chondd d5)) (setq L 0) (setq M (sslength ss)) (while (< L M) (setq DT (ssname ss L)) (command ".copy" DT "" dc p5) (command ".rotate" "last" "" diemcuoi p5) (command ".rotate" "last" "" diemcuoi 180) (setq L (1+ L)) ) (setvar "osmode"luubatdiem) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;; (defun COPYQUAY(/ p3) (setq luubatdiem (getvar "osmode")) (setvar "osmode" 0) (setq d3 (+ (* chieudaidoan index) 0.001)) (setq p3 (vlax-curve-getPointAtDist chondd d3)) (setvar "osmode"luubatdiem) (Cond ((= p3 nil) (copycuoiquay)) ((/= p3 nil) (setq L 0) (setq M (sslength ss)) (setq luubatdiem (getvar "osmode")) (setvar "osmode" 0) (while (< L M) (setq DT (ssname ss L)) (command ".copy" DT "" dc p2) (command ".rotate" "last" "" p2 p3) (setq L (1+ L)) ) (setvar "osmode"luubatdiem) ) ) (princ) ) ;;;;;;;;;;;;;;;;;;;;;;;; (defun COPYKOQUAY() (setq luubatdiem (getvar "osmode")) (setvar "osmode" 0) (command ".copy" ss "" dc p2 "") (setvar "osmode"luubatdiem) (princ) ) ;;;;;;;;;;;;;;


Khi mình xem bài này với vai trò khách thì thấy có hộp code đàng hoàng nhưng đăng nhập vào thì không hiển thị hộp code (chỉ với bài này thôi còn các bài của các bác khác thì vẩn hiển thị bình thường)!

Theo cadviet

Nhận xét

Bài đăng phổ biến từ blog này

Download AutoCAD 2012 Full + Crack, AutoCAD 2012 Full,

Update: More on AutoCAD would be available on Mastering AutoCAD 2012 The next release of AutoCAD is in development & codenamed “Ironman”. If you are interested to be part of the testing team for AutoCAD 2012., register at https://beta.autodesk.com/signup/ AutoCAD 2012 | CAD Professor: The next release of AutoCAD is in development & codenamed Ironman. If you are inte... http://bit.ly/ezBIRD

Lệnh DR (draworder) đảo 2 đối tượng xếp chồng lên nhau trong CAD

Bạn có 2 đối tượng, VD: 1 đường thẳng và 1 hình tròn. Hình tròn của bạn đang đè lên (che khuất) đường thẳng. Bạn muốn đảo ngược lại tức là cho đường thẳng đè lên hình tròn. Bạn dùng Lệnh DR (draworder) để đảo 2 đối tượng xếp chồng lên nhau trong CAD Các bước: DR (draworder): Enter Lựa chọn đường thẳng: Enter Gõ tiếp A (Above objects): Enter Chọn đường tròn: Enter

[File Cad] Khách Sạn Kaya – 4 Sao

Là đơn vị trực thuộc công ty xây dựng Hiệp Hòa, khách sạn Kaya mang đẳng cấp quốc tế tiêu chuẩn tương đương 4 sao tọa lạc tại số 238 đại lộ Hùng Vương – Trung tâm TP. Tuy Hòa, Tỉnh Phú Yên. Dưới đây là 1 số bản vẽ Mặt Bằng, Mặt Cắt, Kết Cấu.. của Khách Sạn Kaya này mà mình sưu tầm được. Công trình gồm 1 tầng hầm, 1 trệt, 1 lửng và 13 lầu.Với tổng chiều cao 55.4m Tên File: File Cad – Kaya Hotel (4 Sao) – Cty XD Hiệp Hòa – TP. Tuy Hòa – Phú Yên Download: Mặt Bằng – Kaya Hotel (01 File .DWG – Size: 4.5 Mb) Download: Mặt Cắt – Kaya Hotel (01 File .DWG – Size: 1.9 Mb) Download: Kết Cấu – Kaya Hotel (05 File .DWG – Size: 2.5 Mb) Download: Phối Cảnh – Kaya Hotel (02 File .JPG – Size: 1.5 Mb) Link Download Toàn Bộ File Trên: http://www.mediafire.com/?gi9e2e82awvdvse (10 Mb) Thông Tin: Nguồn: Sưu Tầm – Upload by www.danxaydung.tk Hình Demo: (theo danxaydung.tk)