Chuyển đến nội dung
Diễn đàn CADViet
Phiphi-

[Đã xong] Lisp xuất-nhập toạ độ

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

PP xin upload các LISP và 1 bản vẽ để Bác nào quan tâm thì tham khảo thêm:

http://www.cadviet.com/upfiles/Lisps_xuat_nhap_toa_do.zip

PP sử dụng trong bản vẽ như sau:

+ Lệnh C2P trong C2P.lsp (do Bác Ssg viết) để chia Pline (màu green) cách khoảng 5 unit.

+ Lệnh COORN trong COORN.lsp để xuất các toạ độ trên Pline ra 1 file Excel/Text.

+ Lệnh TABCORD để vẽ bảng toạ độ trong CAD.

+ Lấy giá tri Z elevation trong bản vẽ để thay các Z trong file toa độ.

+ Lệnh IMPTS trong TAL_ImportPts.lsp đọc file text để vẽ các Points với cao độ Z.

+ Nối các Point lại với nhau.

LISP cần bổ sung thêm:

1. Lisp vẽ các Point tại các giao điểm của profile (màu vàng) rồi xuất ra file Excel/Text và 1 bảng toạ độ như COORN.lsp

2. Sửa lại TAL_ImportPts.lsp để có thể tự động vẽ line nối các point với nhau.

Xin các Bác help thêm. Thanks you

P/s: TAL_ImportPts.lsp > http://www.cadviet.com/forum/index.php?showtopic=8894

 

profilecl2.jpg

w1080.png

  • Vote tăng 3

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 Anh Phiphi!

Cái này quá hay, cách giải quyết của Anh theo tôi nghĩ là giải quyết được cái khó khăn Tôi đưa lên forum bên phần VBA. Để Tôi tải xuống về chạy thử, để xem như thế nào.Nhưng Tôi nghĩ là cách của Anh đúng như Tôi muốn. Cảm ơn Anh rất nhiều. Nếu được thì di "lai rai" như Tôi hứa trên forum.

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 Anh Phiphi!

Cái này quá hay, cách giải quyết của Anh theo tôi nghĩ là giải quyết được cái khó khăn Tôi đưa lên forum bên phần VBA. Để Tôi tải xuống về chạy thử, để xem như thế nào.Nhưng Tôi nghĩ là cách của Anh đúng như Tôi muốn. Cảm ơn Anh rất nhiều. Nếu được thì di "lai rai" như Tôi hứa trên forum.

:cheers: Cái này làm được bằng Lisp mà. Nhưng mình thấy bài toán này giống như vẽ bình đồ-trắc dọc tuyến trong Nova nhỉ. Thực ra mình vẫn chưa hiểu ý nghĩa thực tiễn của bài toán này là như thế nào.

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
:cheers: Cái này làm được bằng Lisp mà. Nhưng mình thấy bài toán này giống như vẽ bình đồ-trắc dọc tuyến trong Nova nhỉ. Thực ra mình vẫn chưa hiểu ý nghĩa thực tiễn của bài toán này là như thế nào.

Bài toán là dùng LISP để tạo ra Pline 3D, các profile, section có thể dùng dể thiết kế các hệ thống đường ống Gas, Water, Sewer, đường dây điện cao thế ... ngầm duới mặt đất.

PP bổ sung thêm vài LISP đã down từ CADViet và cac forum khác:

http://www.cadviet.com/upfiles/Lisp_bo_sung_1.zip

+ Lệnh NN dùng nối các objects lại thành 1 Pline.

+ Lệnh PLREV dùng đổi hướng Lines, Polylines, LWPolylines, các objects khác.

+ Lệnh NUM dùng đánh dấu các point theo thứ tự, có thể thêm text trước và sau, TD: C1x, C2x, C3x.

Nhờ Bác nào thêm vào phần đánh theo cấp số nhân, TD: +5m, +10m, +15m...

+ Lệnh EXPTXT dùng xuất toạ độ ra 1 file text.

+ Lệnh XPIPE hoặc XTUBE dùng vẽ đường ống dạng 3D.

Bác Nataca hoặc các Bác quan tâm có Lisp gì hữu ích khác thi xin chia sẽ thêm. Thanks you.

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
Bài toán là dùng LISP để tạo ra Pline 3D, các profile, section có thể dùng dể thiết kế các hệ thống đường ống Gas, Water, Sewer, đường dây điện cao thế ... ngầm duới mặt đất.

PP bổ sung thêm vài LISP đã down từ CADViet và cac forum khác:

http://www.cadviet.com/upfiles/Lisp_bo_sung_1.zip

+ Lệnh NN dùng nối các objects lại thành 1 Pline.

+ Lệnh PLREV dùng đổi hướng Lines, Polylines, LWPolylines, các objects khác.

+ Lệnh NUM dùng đánh dấu các point theo thứ tự, có thể thêm text trước và sau, TD: C1x, C2x, C3x.

Nhờ Bác nào thêm vào phần đánh theo cấp số nhân, TD: +5m, +10m, +15m...

+ Lệnh EXPTXT dùng xuất toạ độ ra 1 file text.

+ Lệnh XPIPE hoặc XTUBE dùng vẽ đường ống dạng 3D.

Bác Nataca hoặc các Bác quan tâm có Lisp gì hữu ích khác thi xin chia sẽ thêm. Thanks you.

Cái này hay đấy. Phiphi- làm quy hoạch à? Mình sẽ theo sát bài toán này. Phiphi- cứ nói ý tưởng và cách thực hiện, kết quả 1 cách chi tiết sao cho hợp lý nhất nhé. Làm xong cái San nền mình sẽ làm cái này.

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
Cái này hay đấy. Phiphi- làm quy hoạch à? Mình sẽ theo sát bài toán này. Phiphi- cứ nói ý tưởng và cách thực hiện, kết quả 1 cách chi tiết sao cho hợp lý nhất nhé. Làm xong cái San nền mình sẽ làm cái này.

 

 

Chào Anh Phiphi va Nataca.

 

Để Tôi tải xuống và chạy thử. Sẽ cho các Anh biết kết quả.

Đúng như Anh Phiphi viết cái phần thiết kế này về 3D bên gas và CTN cũng như CD. Phần thiết kế nầy bên Nova và các PM Autodesk làm chưa được (vẽ độ công tổng hợ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
Cái này hay đấy. Phiphi- làm quy hoạch à? Mình sẽ theo sát bài toán này. Phiphi- cứ nói ý tưởng và cách thực hiện, kết quả 1 cách chi tiết sao cho hợp lý nhất nhé. Làm xong cái San nền mình sẽ làm cái này.

Hi Nataca, PP chỉ làm công việc của 1 CADD drafter 3D cùng với nhóm thiết kế 1 hệ thống điện cao thế ngầm dưới đất từ nhá máy điện đến trung tâm phân phối trong thành phố (cách xa nhau hơn chục Km) Các đường cáp điện cao thế này sẽ nằm dưới các hệ thống đường ống Gas, Water, Sewer, Điện thoại, điện đường giao thông vv...đã có sằn rồi (hoặc lắp đặt thêm). Yêu cầu an toàn của các cáp cao thế rất chặt chẻ, cần phải cách xa các bề mặt bên trên và các hệ thống đưởng ống khác ngầm dưới đất những khoảng cách quy định, vì vậy bài toán này là vẽ các đường ống/cables 3D, các Profiles, mặt cắt ở những chổ sẽ giao nhau...Input là tập hợp các sơ đồ của các hệ thống Gas, Water, Sewer, Điện thoại, điện đường giao thông vv...Các bản vẽ khảo sát cũ và thuê cty khảo sát khi cần. Nói chung như vậy thì chắc Nataca sẽ hiểu.

Bây giờ PP xin up thêm Lisp khác:

+ Lệnh XDIV dùng chia đường cong, Lines, Pline 3D (chỉ vẽ các Points) theo các đoạn khác nhau do user nhập.

+ Lệnh PTEXPORT xuất các points hay Pline ra file .txt

+ Lệnh 3DOFFSET dùng offset các Pline 3D

+ Lệnh 3PEDIT chỉ dùng nối 2 Pline 3D với nhau. Lisp này cần sửa để có thể select nhiều Pline cùng 1 lúc.

http://www.cadviet.com/upfiles/Lisp_bo_sung_2_.zip

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

Lisp CoorN.lsp đã được chính tác giả là 1 người Russian sửa lại theo đề nghị của PP tối qua.

Trong Lisp đó vài lệnh COOR, COORN, COORT, CoorNP như có trình bày sơ ở bài trên, nhưng cái mới khi dùng lệnh CoorNP thì sẽ vẽ thêm các Points và cho phép đánh theo cấp số nhân (increment of number) rồi xuất ra file Excel hoặc Text

+ Lệnh AD trong AD.lsp do bác Ssg viết dùng để tự động ghi kích thước sau khi select tất cả các objects. Nếu set up như hình dưới thì sẽ chỉ cho thấy số của kích thước mà thôi.

+ Lệnh 3CORD trong 3CORD.lsp để vẽ ra bảng toạ độ của các 3D Polyline trong CAD.

+ Lệnh S2P trong s2p.lsp dùng để đổi Spine ra Polyline.

+ Lệnh CT2 trong ct2.lsp dùng để copy 1 Text nào đó rồi Edit lại thành 1 Text khác.

http://www.cadviet.com/upfiles/Lisps_bo_sung_3.zip

 

dimnv5.jpg

w752.png

 

PP đang cần tìm LISP dùng để nối các điểm x,y,z lại với nhau rồi đổi thành một 3D Polyline. Bác nào biết xin giúp đở nhé. Thank kiều very nhiều :cheers:

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
Lisp CoorN.lsp đã được chinh1 tác giả là 1 người Russian sửa lại theo đề nghị của PP tối qua.

Trong Lisp đó vài lệnh COOR, COORN, COORT, CoorNP như có trình bày sơ ở bài trên, nhưng cái mới khi dùng lệnh CoorNP thì sẽ vẽ thêm các Points và cho phép đánh theo cấp số nhân (increment of number) rồi xuất ra file Excel hoặc Text

+ Lệnh AD trong AD.lsp do bác Ssg viết dùng để tự động ghi kích thước sau khi select tất cả các objects. Nếu set up như hình dưới thì sẽ chỉ cho thấy số của kích thước mà thôi.

+ Lệnh 3CORD trong 3CORD.lsp để vẽ ra bảng toạ độ của các 3DPolyline trong CAD.

+ Lệnh S2P trong s2p.lsp dùng để đổi Spine ra Polyline.

+ Lệnh CT2 trong ct2.lsp dùng để copy 1 Text nào đó rồi Edit lại thành 1 Text khác.

http://www.cadviet.com/upfiles/Lisps_bo_sung_3.zip

dimnv5.jpg

w752.png

 

PP đang cần tìm LISP dùng để nối các điểm x,y,z lại với nhau rồi đổi thành một 3D Polyline. Bác nào biết xin giúp đở nhé. Thank kiều very nhiều :cheers:

 

 

____________________________________________________________

3D pline.

Hinh lệnh này nằm trong Nova?

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
3D pline.

Hinh lệnh này nằm trong Nova?

Chỉ dùng AutoCAD:

+ Lệnh _3dpoly dùng vẽ 3D Polyline

+ Lệnh '_dimstyle dùng set up các Dimension Styles

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

PP vừa có thêm 1 Lisp mới được viết theo yêu cầu:

+ Lệnh POL dùng để vẽ 3D Polyline qua các Points

+ Lệnh SPL dùng để vẽ 3D Spline qua các Points

Hai lệnh này dùng chung trong 1 Lisp pol_spl.lsp

http://www.cadviet.com/upfiles/pol_spl.lsp

 

Lisp đang sưu tầm:

1. http://www.cadviet.com/forum/index.php?showtopic=9107

2. http://www.cadviet.com/forum/index.php?showtopic=9089

Xin các Bác giúp dùm.Thanks you.

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

+ Lệnh MEXY chia Polyline/Spline theo phương X/Y thành những đoạn nhỏ bằng nhau có kích thước xác định.

 

splinexl1.jpg

w949.png

Lisp này do bác Nataca viết:

(defun C:MEXY (/ Lent ent vent Fp Ep entL Nent Lstp pInt)
 	(INIT)
 	(SAVE_MODE)
 	(vl-load-com)
 	(setvar "OSMODE" 0)
(setq trucchia 	(NHAPKEY "\n Chia deu doi tuong theo x/y: " "x y" trucchia)
	  huongchia	(NHAPKEY "\n Chon huong chia <1-bat dau phia trai(x)/duoi(y), 2-bat dau phia phai(x)/tren(y): " "1 2" huongchia)
	  Lent		(SS2LST (ESENT "\n Chon doi tuong can chia" "POLYLINE,LWPOLYLINE,SPLINE,ARC,ELLIPSE,CIRCLE,LINE"))
	  kcach		(NHAPREAL "\n Nhap khoang cach chia:" kcach)
 	)
 	(foreach ent Lent
  	(setq 	Fp	(vlax-curve-getStartPoint ent)
			Ep	(vlax-curve-getEndPoint ent)
	)
  	(cond	( 	(= trucchia "x")
  				(command "line" Fp (list (car Ep) (cadr Fp)) "")
			 	(setq Mp	(list (/ (+ (car Fp) (car Ep)) 2) (cadr Fp)))
		 	)
			(	(= trucchia "y")
	  			(command "line" Fp (list (car Fp) (cadr Ep)) "")
			 	(setq Mp	(list (car Fp) (/ (+ (cadr Fp) (cadr Ep)) 2)))
		 	)
  	)

  	(setq	entL 	(entlast)
	  		Nent 	entL
			Lstp	'()
  	)
  	(command "measure" Nent kcach)
  	(while Nent
	  	(setq Nent 	(entnext Nent)
			  Lstp	(if (and	Nent
								(= (cdr (assoc 0 (entget Nent))) "POINT")
						)
						(append Lstp (list Nent))
					  	Lstp
				  	)
	  	)
  	)
  	(if (= huongchia "1")
	  	(foreach p Lstp
		  	(if (= trucchia "x")
	  			(command "mirror" p "" Mp (list (car Mp) (1+ (cadr Mp))) "Y")
			  	(command "mirror" p "" Mp (list (1+ (car Mp)) (cadr Mp)) "Y")
		  	)
 		)
  	)
 		(cond	(	(= trucchia "x")
			 	(foreach d Lstp 
				 	(command "xline" "v" (cdr (assoc 10 (entget d))) "")
				  	(setq pInt (car (GIAODT (entlast) ent)))
				  	(entdel (entlast))
				  	(if pInt
						(entmake (list '(0 . "POINT") (cons 10 pInt)))
			  		)
				)
			 	(entmake (list '(0 . "POINT") (cons 10 Fp)))
			 	(entmake (list '(0 . "POINT") (cons 10 Ep)))
		 	)
			(	(= trucchia "y")
			 	(foreach d Lstp 
				 	(command "xline" "h" (cdr (assoc 10 (entget d))) "")
				  	(setq pInt (car (GIAODT (entlast) ent)))
				  	(entdel (entlast))
				  	(if pInt
						(entmake (list '(0 . "POINT") (cons 10 pInt)))
			  		)
				)
			 	(entmake (list '(0 . "POINT") (cons 10 Fp)))
			 	(entmake (list '(0 . "POINT") (cons 10 Ep)))
		 	)
	)
  	(foreach p Lstp (entdel p))
  	(entdel entL)
 	)
 	(DONE)
 	(RESTORE)
)

;;;Ham con

; HAM BAY LOI
(defun INIT ()
 	(setq 	OLD_ERROR 	*error*
		*error* 	MYERROR
)
  	(command "Undo" "begin")
)1

(defun MYERROR (errmsg)

 	(cond
   		(	(= errmsg "quit / exit abort")
	 	(princ)
	)
   		(	(/= errmsg "Function cancelled")
	 	(princ (strcat "\n Co loi: " errmsg))
	)
 	)
 	;(command "Undo" 1)
 	(setvar "osmode" OLD_OSMODE)
(command "CECOLOR" OLD_CECOLOR)
	(DONE)
 	(prompt "\n Da thuc hien ham error, Reset lai thiet lap ban dau")
  	(command "Undo" "end")

)

(defun DONE ()
 	(if OLD_ERROR (setq *error* OLD_ERROR))
)
;;;;;----------------------------------------------------------
; HAM LUU VA TRA LAI CAC THONG SO BAN DAU
(defun SAVE_MODE()

 	(command "Undo" "begin")
(command "UCS" "W" "")
	(setq   OLD_OSMODE 		(getvar "OSMODE")
			OLD_CECOLOR 	(getvar "CECOLOR")
		OLD_AUTOSNAP	(getvar "AUTOSNAP")
		OLD_ORTHOMODE	(getvar "ORTHOMODE")
)
 	(command "cmdecho" 0)

)
(defun RESTORE()

 	(command "Undo" "end")			
 	(setvar "osmode" 	OLD_OSMODE)
(setvar "AUTOSNAP"	OLD_AUTOSNAP)
(setvar	"ORTHOMODE" OLD_ORTHOMODE)
	(command "CECOLOR" OLD_CECOLOR)
 	(command "cmdecho" 1)
(Grtext -1 "Lisp's written by Nataca - 0983.715.333")
)
;;;NHAP GIA TRI LA SO THUC
(defun NHAPREAL (dongnhac Tso)
(if (null Tso)
	(progn
		(initget (+ 1 2))
		(getreal (strcat dongnhac " <?>:"))
	)
	(progn
		(cond 
		  	(	(progn
					(initget (+ 2))
					(getreal (strcat dongnhac " < "(rtos Tso 2 5) " >:"))
			  	)
			)
			(T Tso)

		)
	)

)
)

;------------------------------------------
;;;NHAP KEY VAO
(defun NHAPKEY	(dongnhac key Text)

(if (null Text)
	(progn
		(initget 1 key)
		(getkword (strcat dongnhac " :"))
	)
	(progn
		(cond
			((progn
				 (initget key)
				 (getkword (strcat dongnhac " < " Text " >:"))
			 )
			)
			(T Text)

		)
	)

)
)
; CHUYEN BIEU DIEN TAP HOP DOI TUONG DUOI DANG LIST CHUA ENAME CUA CAC DOI TUONG
(defun SS2LST (ss / sodt index lstent)
(setq
	sodt (if ss (sslength ss) 0)
	index 0
)
(repeat sodt
	(setq 	ent 	(ssname ss index)
			index 	(1+ index)
			lstent 	(cons ent lstent)
	)
)
(reverse lstent)
)

;;; CHON DOI TUONG THEO NGUOI DUNG KEM DONG NHAC (BAT BUOC CHON)

(defun ESENT (dongnhac Nent / ss LNent Lst SLst)

 	(if (= Nent nil)
  	(while 	(and	(not (prompt dongnhac))
					(not (setq ss	(ssget)))
			)
  	)
  	(while 	(and	(not (prompt dongnhac))
					(not (setq ss	(ssget (list (cons 0 Nent)))))
			)
  	)

 	)
 	ss
)

;;;GIAO CUA 2 DOI TUONG
(defun GIAODT (ent1 ent2 / ob1 ob2 g kq sd)
(setq	ob1 (vlax-ename->vla-object ent1)
		ob2 (vlax-ename->vla-object ent2)
)
(setq	g (vlax-variant-value
			  (vla-IntersectWith ob1 ob2 acExtendNone)
		  )
)
(if (/= (vlax-safearray-get-u-bound g 1) -1)
	(setq g (vlax-safearray->list g))
	(setq g nil)
)
(if g
	(progn
		(setq	kq	nil
				sd	(fix (/ (length g) 3))
		)
		(repeat sd
			(setq	kq	(append kq (list (list (car g) (cadr g) (caddr g))))
					g	(cdddr g)
			)
		)
		kq
	)
	nil
)
)

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

+Lệnh CK đánh dấu/chia trên 3D Pline và 3D Spline theo những khoảng cách bằng nhau (từ point đến point)

 

makingdistanceseg5.jpg

w758.png

Lisp do Trưởng lão Ssg viết:

;;;=================================
;;;CHIA DOI TUONG VOI KHOANG CACH DEU THEO DUONG THANG
;;;Ap dung cho moi doi tuong 2D va 3D: line, pline, spline, arc...
;;;Appload va go lenh CK
;;;Written by ssg - www.cadviet.com - February 2009
;;;=================================

;;;-------------------------------------------------------------
(defun LenCurve (cur) ;;;Length of curve, return Real
(vlax-curve-getDistAtParam cur (vlax-curve-getEndParam cur))
)
;;;=================================
(defun C:CK(  / e k p ps pe L fuzz kc p0 flag p1 OK kc1)
(vl-load-com)
;;;SO LIEU BAN DAU
(setq
   e (car (entsel "\nChon curve:"))
   k (getreal "\nKhoang cach giua 2 diem theo duong thang:")
   p (getpoint "\nDiem bat dau:")
   ps (vlax-curve-getStartPoint e)
   pe (vlax-curve-getEndPoint e)
   L (LenCurve e)
   fuzz 0.00000001
)
;;;THIET LAP CAC DIEU KIEN
(cond
   ((equal p ps fuzz) (setq kc k p0 ps flag 1))
   ((equal p pe fuzz) (setq kc (- L k) p0 pe flag -1))
   ((alert "Phai chon diem bat dau tai 1 trong 2 dau mut!"))
)
;;;CHIA KHOANG
(setq p1 p0)
(while p1
   (setq OK nil)
   (while (not OK)
       (setq
           p1 (vlax-curve-getPointAtDist e kc)
           kc1 (distance p0 p1)
       )
       (if (equal kc1 k fuzz) (setq OK T) (setq kc (+ kc (* flag (- k kc1)))))
       (if (equal p1 ps fuzz) (exit))
   )
   (if p1 (entmake (list (cons 0 "POINT") (cons 10 p1))))
   (setq p0 p1)
   (setq kc (+ kc (* flag k)))
)
(princ)
)
;;;=================================

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

+Lệnh EI2P dùng để vẽ POINT tại các điểm giao nhau của 1 Pline (màu vàng) với các Lines thẳng đứng như trong bàn vẽ.

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

intersectionpointsso8.jpg

w889.png

Lisp này do bác Nataca viết:

(defun C:EI2P ()
 	(vl-load-com)
 	(princ "\n Chon polyline...")
(setq ssp 	(ssget '((0 . "LWPOLYLINE"))))
  	(princ "\n Chon cac duong line...")
(setq 	ssl 	(ssget '((0 . "LINE")))
 			Enp		(ssname ssp 0)
	  	dem		0
		Lpoint	'()
 	)
 	(repeat (sslength ssl)
 		(setq Lpoint	(append  Lpoint (GET_INTERSECTION (ssname ssl dem) Enp))
		  dem		(1+ dem)
  	)
 	)
(foreach p Lpoint
	(entmake (list '(0 . "POINT") (cons 10 p)))
 	)
)
(defun GET_INTERSECTION (e1 e2 / ob1 ob2 V L1 L2)
(setq	ob1 (vlax-ename->vla-object e1)
  		ob2 (vlax-ename->vla-object e2)
		V	(vlax-variant-value
		  		(vla-IntersectWith ob1 ob2 acExtendNone)
			)
)
(if	(/= (vlax-safearray-get-u-bound V 1) -1)
  (progn
	(setq L1 (vlax-safearray->list V)
		  L2 nil
	)
	(while L1
	  (setq L2 (append L2 (list (list (car L1) (cadr L1) (caddr L1)))))
	  (repeat 3 (setq L1 (cdr L1)))
	)
  )
  (setq L2 nil)
)
L2
)

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

+Lệnh IP dùng để insert các Points tại các giao điểm của các Line/Pline/Spline (trên mặt phằng XY) sau khi dùng mouse quét qua các objects.

Lisp do Trưởng lão Ssg viết:

;;;-----------------------------------------------------
(defun ss2ent (ss / i Le e) ;;;Convert ss to list of ename
(setq i 0)
(repeat (sslength ss) 
   (setq
       e (ssname ss i)
       Le (append Le (list e))
       i (1+ i)
   )
)
Le
)
;;;-----------------------------------------------------
(defun Inters (e1 e2 / ob1 ob2 g L i kq)
(vl-load-com)
(setq
   ob1 (vlax-ename->vla-object e1)
   ob2 (vlax-ename->vla-object e2)
   g (vlax-variant-value (vla-IntersectWith ob1 ob2 acExtendNone))
)
(if (/= (vlax-safearray-get-u-bound g 1) -1) (setq L (vlax-safearray->list g)))
(setq i 0)
(repeat (/ (length L) 3)
   (setq kq (append (list (list (nth i L) (nth (+ i 1) L) (nth (+ i 2) L))) kq))
   (setq i (+ i 3))
)
kq
)
;;;-----------------------------------------------------
(defun C:IP ( / Le e0 e Lp p) ;;;Intersection Points
(setq Le (ss2ent (ssget '((0 . "LINE,POLYLINE,LWPOLYLINE,SPLINE")))))
(repeat (1- (length Le))
   (setq Le (vl-remove (setq e0 (car Le)) Le))
   (foreach e Le (setq Lp (append Lp (inters e0 e)))) 
)
(foreach p Lp (entmake (list (cons 0 "POINT") (cons 10 (list (car p) (cadr p) 0.0)))))
(princ)
)
;;;-----------------------------------------------------

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

+Lệnh C2F xuất data của ARC, ATTRIB, CIRCLE,ELLIPSE, IMAGE, INSERT (Block), LINE, LWPOLYLINE, MLINE, MTEXT, POINT, POLYLINE, SOLID, TEXT, TRACE, XLINE từ b/v CAD ra nhiều loại file Text.

http://www.cadviet.com/upfiles/CAD2FILE.zip

(Nhớ tạo đường dẩn để Lisp open file CAD2FILE.DCL)

Lisp của JefferyPSanders.com

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

+ Lệnh IMPORTXYZ dùng đọc toạ độ từ file text rồi vẽ Points, Circle, Lines, Block ... vào b/v CAD.

Link down của LISP: http://www.jefferypsanders.com/IMPORTXYZ.zip

(Nhớ tạo đường dẩn để Lisp open file IMPORTXYZ.DCL)

Lisp của JefferyPSanders.com

  • Vote tăng 1

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
PP xin upload các LISP và 1 bản vẽ để Bác nào quan tâm thì tham khảo thêm:

http://www.cadviet.com/upfiles/Lisps_xuat_nhap_toa_do.zip

PP sử dụng trong bản vẽ như sau:

+ Lệnh C2P trong C2P.lsp (do Bác Ssg viết) để chia Pline (màu green) cách khoảng 5 unit.

+ Lệnh COORN trong COORN.lsp để xuất các toạ độ trên Pline ra 1 file Excel/Text.

+ Lệnh TABCORD để vẽ bảng toạ độ trong CAD.

+ Lấy giá tri Z elevation trong bản vẽ để thay các Z trong file toa độ.

+ Lệnh IMPTS trong TAL_ImportPts.lsp đọc file text để vẽ các Points với cao độ Z.

+ Nối các Point lại với nhau.

LISP cần bổ sung thêm:

1. Lisp vẽ các Point tại các giao điểm của profile (màu vàng) rồi xuất ra file Excel/Text và 1 bảng toạ độ như COORN.lsp

2. Sửa lại TAL_ImportPts.lsp để có thể tự động vẽ line nối các point với nhau.

Xin các Bác help thêm. Thanks you

P/s: TAL_ImportPts.lsp > http://www.cadviet.com/forum/index.php?showtopic=8894

 

profilecl2.jpg

w1080.png

Rất mong được các anh tổng họp thành một menu vể chuyên đề xuất nhập toạ độ các dạng từ......----->>>> sang Cad <<<---------- và

 

Rất cám ơn

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

http://www.cadviet.com/upfiles/IMPORTXYZ_1.zip

Thật sự tôi rất cảm ơn những chia xẻ của bạn. Tôi đang rất cần sử dụng lisp này, tôi vẫn thường xuyên sử dụng lisp nhưng tôi không viết lisp nên không hiểu nắm. Hiện nay tôi không biết cách liên kết đến file IMPORTXYZ.DCL như thế nào. Rất mong được sự chỉ bảo của bạn. Thanh you! mong sớm nhận được hồi âm.

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
http://www.cadviet.com/upfiles/IMPORTXYZ_1.zip

Thật sự tôi rất cảm ơn những chia xẻ của bạn. Tôi đang rất cần sử dụng lisp này, tôi vẫn thường xuyên sử dụng lisp nhưng tôi không viết lisp nên không hiểu nắm. Hiện nay tôi không biết cách liên kết đến file IMPORTXYZ.DCL như thế nào. Rất mong được sự chỉ bảo của bạn. Thanh you! mong sớm nhận được hồi âm.

+ Bác cứ unzip vào thẳng folder x:\Program Files\AutoCAD xxxx\Support.

+ Lệnh APPLOAD, chọn filename: IMPORTXYZ (double click)

+ Lệnh IMPORTXYZ, chọn file toạ độ.

  • Vote tăng 1
  • Vote giảm 1

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

Rất cảm ơn sự chia sẻ của bạn nhưng sao mình download về thì khi sử dụng độc lập lệnh: COORN để xuất toạ độ đường spline thì không xuất thấy gì đấy. Mong bản chỉ bảo giúp.

Thank you!

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
Bạn có thể hướng dẫn cách sử dụng lisp này được ko? Nghe nói thấy cũng hay đấy.

Khi mình chạy báo lỗi

Enter the vertical exaggeration <1>: 1

; error: bad argument type: numberp: nil

Philipdn hãy thử chọn 5, 10 hoặc số lớn hơn.

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
Rất cảm ơn sự chia sẻ của bạn nhưng sao mình download về thì khi sử dụng độc lập lệnh: COORN để xuất toạ độ đường spline thì không xuất thấy gì đấy. Mong bản chỉ bảo giúp.

Thank you!

Hãy dùng Lisp CoorNP.lsp trong đó có vài lệnh COOR, COORN, COORT, CoorNP như có trình bày ở bài trên, nhưng cái mới khi dùng lệnh CoorNP thì sẽ vẽ thêm các Points và cho phép đánh theo cấp số nhân (increment of number) rồi xuất ra file Excel hoặc Text.

http://www.cadviet.com/upfiles/Lisps_bo_sung_3.zip

Nếu Bác khồng xuất được thì chỉ upload đường spline để PP thử xem. Cheers!

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

Cảm ơn anh vì lòng nhiệt tình chia sẻ dữ liệu với tôi. Tôi đã download file mà anh upload lên rồi nhưng không thể nào xuất toạ độ của đường spline ra được khi tôi sử dụng lệnh coornp như anh hướng dẫn. Mong anh chỉ bảo thêm.

Giả sử tôi muốn xuất toạ độ nằm trên đường spline bất kỳ nào đó (những điểm này tạo nên đường spline). thì không xuất ra được.

Thank you!

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

×