Rated 5/5 based on 240179 internet user reviews

Đến nội dung


Hình ảnh
- - - - -

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


  • Please log in to reply
56 replies to this topic

#1 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 08 February 2009 - 04:48 PM

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.c...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.c...?showtopic=8894

Hình đã gửi
Hình đã gửi
  • 3

#2 haisihai

haisihai

    biết vẽ ellipse

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

Đã gửi 08 February 2009 - 06:11 PM

____________________________________________________________
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.
  • 0

#3 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 543 (tốt)

Đã gửi 08 February 2009 - 09:08 PM

____________________________________________________________
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.
  • 0

#4 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 09 February 2009 - 07:02 PM

: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.c...p_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.
  • 0

#5 nataca

nataca

    biết lệnh adcenter

  • Members
  • PipPipPipPipPipPipPip
  • 712 Bài viết
Điểm đánh giá: 543 (tốt)

Đã gửi 09 February 2009 - 07:45 PM

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.c...p_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.
  • 0

#6 haisihai

haisihai

    biết vẽ ellipse

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

Đã gửi 10 February 2009 - 07:56 AM

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)
  • 0

#7 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 10 February 2009 - 07:18 PM

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.c..._bo_sung_2_.zip
  • 0

#8 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 11 February 2009 - 06:33 PM

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.c...s_bo_sung_3.zip

Hình đã gửi
Hình đã gửi

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:
  • 0

#9 haisihai

haisihai

    biết vẽ ellipse

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

Đã gửi 11 February 2009 - 07:29 PM

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.c...s_bo_sung_3.zip
Hình đã gửi
Hình đã gửi

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?
  • 0

#10 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 11 February 2009 - 08:23 PM

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
  • 0

#11 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 13 February 2009 - 09:09 PM

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.c...les/pol_spl.lsp

Lisp đang sưu tầm:
1. http://www.cadviet.c...?showtopic=9107
2. http://www.cadviet.c...?showtopic=9089
Xin các Bác giúp dùm.Thanks you.
  • 0

#12 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 24 February 2009 - 06:47 PM

+ 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.

Hình đã gửi
Hình đã gửi
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	))

  • 0

#13 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 24 February 2009 - 07:05 PM

+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)

Hình đã gửi
Hình đã gửi
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));;;=================================

  • 0

#14 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 24 February 2009 - 07:19 PM

+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.c...tion_Points.dwg
Hình đã gửi
Hình đã gửi
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)

  • 0

#15 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 24 February 2009 - 07:23 PM

+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));;;-----------------------------------------------------

  • 0

#16 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 24 February 2009 - 07:30 PM

+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.c...es/CAD2FILE.zip
(Nhớ tạo đường dẩn để Lisp open file CAD2FILE.DCL)
Lisp của JefferyPSanders.com
  • 0

#17 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 24 February 2009 - 07:45 PM

+ 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.jefferyps...m/IMPORTXYZ.zip
(Nhớ tạo đường dẩn để Lisp open file IMPORTXYZ.DCL)
Lisp của JefferyPSanders.com
  • 1

#18 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 - 09:30 PM

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.c...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.c...?showtopic=8894

Hình đã gửi
Hình đã gửi

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
  • 0

#19 bktec84

bktec84

    biết vẽ arc

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

Đã gửi 09 March 2009 - 11:44 PM

http://www.cadviet.c...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.
  • 0

#20 Phiphi-

Phiphi-

    biết lệnh minsert

  • Members
  • PipPipPipPipPipPip
  • 434 Bài viết
Điểm đánh giá: 172 (tàm tạm)

Đã gửi 10 March 2009 - 04:25 PM

http://www.cadviet.c...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ạ độ.
  • 0