Chuyển đến nội dung
Diễn đàn CADViet
Nguyen Hoanh

Viết Lisp theo yêu cầu

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

các đại ca giúp em. e vào option tăng độ lớn của pickboxsize và aperture size - apply - ok.nhưng khi mở file khác nó lại quay về kích thước ban đầu.helpppppppppppppp

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ác đại ca giúp em. e vào option tăng độ lớn của pickboxsize và aperture size - apply - ok.nhưng khi mở file khác nó lại quay về kích thước ban đầu.helpppppppppppppp

Kích thước Pickbox Size Aperture Size phụ thuộc vào biến hệ thống : PICKBOX APERTURE .

Mỗi khi bạn mở file, CAD sẽ đọc biến hệ thống này và cập nhật lại giá trị của chúng.

Để gán giá trị cố định cho Pickbox Size Aperture Size bạn có thể thêm chúng vào file acad.lsp hoặc acaddoc.lsp tùy theo hệ thống của bạn.

vi du :

(setvar "PICKBOX" 10)

(setvar "APERTURE" 10)

  • 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
Rất cảm ơn bạn nha.Lệnh này chỉ đo theo hướng vuông góc thôi còn hướng siên thì sao ha ban.

xoay ucs rồi dim thôi.hix.phải chịu khó thôi.nếu vẽ 1 bản vẽ quá dể dàng thì tiền cũng ít đi mà.hix mình đau lòng lắm.vẽ cad rất nhanh nên bị các đồng nghiệp ghét

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
Kích thước Pickbox Size Aperture Size phụ thuộc vào biến hệ thống : PICKBOX APERTURE .

Mỗi khi bạn mở file, CAD sẽ đọc biến hệ thống này và cập nhật lại giá trị của chúng.

Để gán giá trị cố định cho Pickbox Size Aperture Size bạn có thể thêm chúng vào file acad.lsp hoặc acaddoc.lsp tùy theo hệ thống của bạn.

vi du :

(setvar "PICKBOX" 10)

(setvar "APERTURE" 10)

hix.làm ko được.bạn chỉ kỹ hơn 1 chút đi.mình thường vẽ tỉ lệ 1-1.mình đã lảm như bạn chỉ mà ko được

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
hix.làm ko được.bạn chỉ kỹ hơn 1 chút đi.mình thường vẽ tỉ lệ 1-1.mình đã lảm như bạn chỉ mà ko được

Bạn có thể copy 2 dòng trên vào bất kỳ file lisp nào đó Vd: SetVar.lsp, sau đó từ Cad gõ Appload->chọn Contents.. trong muc Startup Suite - > clickAdd... rồi chon file SetVar.lsp -> Close - > Close.

Chúc bạn thành công.

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ể copy 2 dòng trên vào bất kỳ file lisp nào đó Vd: SetVar.lsp, sau đó từ Cad gõ Appload->chọn Contents.. trong muc Startup Suite - > clickAdd... rồi chon file SetVar.lsp -> Close - > Close.

Chúc bạn thành công.

ặc ặc ko được

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ể copy 2 dòng trên vào bất kỳ file lisp nào đó Vd: SetVar.lsp, sau đó từ Cad gõ Appload->chọn Contents.. trong muc Startup Suite - > clickAdd... rồi chon file SetVar.lsp -> Close - > Close.

Chúc bạn thành công.

 

thì ra là phải tạo lisp mới.mình làm được rồi.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

Các Mem ơi. Có cách nào nội suy 1 đường Polyline từ 2 đường poly line cho trước không?

 

Tôi đang muốn nội suy đường tâm từ 2 đường cho trước

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ác Mem ơi. Có cách nào nội suy 1 đường Polyline từ 2 đường poly line cho trước không?

 

Tôi đang muốn nội suy đường tâm từ 2 đường cho trước

Ý bạn nội suy là gì vậy,? theo nguyên tắc nào nhỉ? mong bạn nói rõ hơn ý định của mình.

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ôi có 2 đường Polyline, chạy gần như song song. Tôi muốn có đường tâm của 2 đường ấy. Không thể Offset vì độ rộng giữa 2 đường không đều. 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ôi có 2 đường Polyline, chạy gần như song song. Tôi muốn có đường tâm của 2 đường ấy. Không thể Offset vì độ rộng giữa 2 đường không đều. Thanks!

Đây là bài toán dựng hình đơn thuần. Dựng đường phân giác của 2 đoạn thẳng không giao nhau.

 

Bạn làm như sau:

1. Gọi 2 đường ban đầu là màu đỏ như trong hình.

2. Copy 1 đường vào chạm đường kia (đường mới có hình màu vàng - yellow)

3. Dựng phân giác của đường ở bước 2 với đường màu đỏ (đường mới dựng màu xanh cây - green). Cách dựng đường phân giác ở đây

4. Dựng đường vuông góc với đường phân giác ở bước 3, cắt cả 2 đường màu đỏ (đường dựng mới có màu xanh trời - cyan)

5. Dựng đường thẳng song song với đường bước 3 và đi qua trung điểm của đường ở bước 4 (đường mới dựng có màu xanh biển - blue).

 

dunghinh.gif

 

Đường ở bước 5 là đường phân giác của 2 đoạn thẳng ban đầu, cách đều cả 2 đoạn thẳng đó.

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ác Mem ơi. Có cách nào nội suy 1 đường Polyline từ 2 đường poly line cho trước không?

 

Tôi đang muốn nội suy đường tâm từ 2 đường cho trước

Có lẽ bạn chưa thoả mãn với lời giải của anh Hoành. Ý bạn là lấy tim đường giao thông đúng không?

Nói chung:

1. Pline gồm nhiều đoạn thẳng và cung tròn nối tiếp nhau

2. Số segment của 2 lề đường có thể không bằng nhau

 

Theo ssg, bạn hãy post 1 file *.dwg mẫu lên, trong đó có vẽ vài con đường và tim đường chuẩn nhất theo cách làm (thủ công) của bạn. Lưu ý: không cần nhiều đường lắm nhưng chúng phải mang tính điển hìnhtổng quát.

Bạn đã post yêu cầu vài lần nhưng chưa có câu trả lời thoả đáng vì lý do đơn giản: bạn tiết kiệm lời quá! Hãy tìm cách diễn đạt để mọi người đều hiểu một cách chính xác. Xin nhớ rằng, người khác không phải là bạn, không thể hiểu chuyên môn, công việc bạn đang làm, cũng như ý đồ bạn muố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

Khi vẽ mặt bằng kết cấu. Tại các vị trí giao nhau giữa các dầm ta thường phải dùng lệnh trim để chỉnh sửa (xem hình vẽ) nhưng như thế thì rất lâu và bất tiện. Mình muốn nhờ Bác Hoành viết giúp dân kêt cấu 1 lisp mà chỉ cần quét tại vị trí giao nhau giữa các dầm thì có thể trim đc các đối tượng như hình vẽ. Theo mình thì lisp này giúp ích rất nhiều cho dân kết cấu. Mong nhận dc sự giúp đỡ của Bac Hoành cũng như mọi người.

Up_1.jpg

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ác đại ca giúp em. e vào option tăng độ lớn của pickboxsize và aperture size - apply - ok.nhưng khi mở file khác nó lại quay về kích thước ban đầu.helpppppppppppppp

có pro nào chỉnh được cái này mà ko phải dùng lisp ko.giúp em với.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
có pro nào chỉnh được cái này mà ko phải dùng lisp ko.giúp em với.thanks

Khi bạn vào Options chọn, các giá trị Pickbox và Aperture được lưu trong Registry. Thao tác open file bình thường không làm thay đổi chúng. Nếu mỗi lần bạn open file, các giá trị trên thay đổi có nghĩa là: bạn đang dùng một trình lisp nào đó, đã thiết lập autoload và tác giả chương trình đã cố tình làm như vậy (thật đáng tiếc!). Có các cách xử lý sau:

 

1.Muốn biết trình lisp nào gây ra lỗi này, bạn có thể vô hiệu tính năng autoload của tất cả chúng. Lần lượt appload bình thường từng cái một sẽ phát hiện ra. Dò tìm trong code của nó, chỉnh sửa hoặc vô hiệu hoá chúng đi.

 

2. Nếu bạn không tự sửa được thì... đừng dùng nữa! Theo ssg, một trình lisp gây ra điều đó chứng tỏ tác giả thiếu trách nhiệm với user, không nên dùng làm gì!

 

3. Nếu vẫn cứ muốn dùng lisp đó, bạn thử làm cách này xem:

Soạn file *.lsp có nội dung:

(setvar "PICKBOX" 6)
(setvar "APERTURE" 10)

Các giá trị 6 và 10 là ví dụ. Bạn có thể thay đổi phù hợp với thói quen thông thường của bạn.

 

Dùng lệnh Appload, tại Startup Suite bấm Contents -> Add -> Chọn file *.lsp nói trên -> Close -> Close

Hy vọng điều khó chịu của bạn sẽ hết.

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ể post yêu cầu về autolisp ở topic này.

Nghe tên tuổi anh Hoành khá lâu

Mong có dịp yết kiến

Tiện đây em có việc muốn nhờ anh:

 

Trên màn hình cad có rát nhiều các hình chữ nhật (cùng layer, REC, to nhỏ khác nhau, Có thể cùng tỷ lệ đứng/tỷ lệ ngang)

Em cần 1 lisp có chức năng thế này: Khi gõ lệnh nó sẽ đánh số thứ tự tăng dần từ trái qua phải từ trên xuống duối vào giữa các hình chũ nhật

 

moyeu.jpg

Đuơịc không ạ??

 

Giúp em với, em nghĩ sẽ có nhiều anh em dùng tới lissp này của bác

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
Khi vẽ mặt bằng kết cấu. Tại các vị trí giao nhau giữa các dầm ta thường phải dùng lệnh trim để chỉnh sửa (xem hình vẽ) nhưng như thế thì rất lâu và bất tiện. Mình muốn nhờ Bác Hoành viết giúp dân kêt cấu 1 lisp mà chỉ cần quét tại vị trí giao nhau giữa các dầm thì có thể trim đc các đối tượng như hình vẽ. Theo mình thì lisp này giúp ích rất nhiều cho dân kết cấu. Mong nhận dc sự giúp đỡ của Bac Hoành cũng như mọi người.

Up_1.jpg

 

 

Chép đoạn mã này về, tạo file lisp mới rồi bác dùng thử nhé:

Các đoạn giao có thể là LINE hoặc PolyLINE. Và lúc chọn bác có thể chọn thoải mái bằng crossing window, các đối tượng được chọn nếu là khác Line hoặc polyline sẽ được loại bỏ.

 

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;
;Ham tim giao diem giua 2 doi tuong
;ent1, ent2 : ename
(defun giao(ent1 ent2 / ob1 ob2 g kq sd)
 (Vl-Load-Com)
 (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
 )
 (if kq (setq gi (nth 0 kq)))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(defun c:ttr(/ os ss0 ss1 i j dtrim dti dtj gd dgiua dtrim)
 (setq os (getvar "OSMODE"))
 (prompt "\nCh\U+1ECDn các \U+0111\U+1ED1i t\U+01B0\U+1EE3ng c\U+1EA7n c\U+1EAFt gi\U+1EEFa: ")
 (setq ss1 (ssget))
 (setq ss0 (ssadd))
 (while (/= (sslength ss0) 4)
(setq i 0)
(setq ss0 (ssadd))
(while (< i (sslength ss1))
  (if (or (= (cdr (assoc 0 (entget (ssname ss1 i)))) "LINE")
	  (= (cdr (assoc 0 (entget (ssname ss1 i)))) "LWPOLYLINE")
  )
(setq ss0 (ssadd (ssname ss1 i) ss0))
  )
  (setq i (1+ i))
)
(if (/= (sslength ss0) 4)
  (progn
(prompt "\nNhóm \U+0111\U+1ED1i t\U+01B0\U+1EE3ng sai quy \U+0111\U+1ECBnh, ch\U+1ECDn l\U+1EA1i: ")
(setq ss1 (ssget))
  )
)
 )
 (setq i 0)
 (setq dtrim '())
 (while (< i (sslength ss0))
(setq dti (ssname ss0 i))
(setq j 0)
(setq gd '())
(while (< j (sslength ss0))
  (if (/= j i)
(progn
  (setq dtj (ssname ss0 j))
  (setq gi (giao dti dtj))
  (if gi (setq gd (append gd (list gi))))
)
  )
  (setq j (1+ j))
)
(setq dgiua (list (/ (+ (car (nth 0 gd)) (car (nth 1 gd))) 2)
		  (/ (+ (cadr (nth 0 gd)) (cadr (nth 1 gd))) 2)
		  0.0
	)
) 
(if dgiua (setq dtrim (append dtrim (list dgiua))))
(setq i (1+ i))
 )
 (setvar "OSMODE" 0)
 (command ".TRIM" ss0 "" (nth 0 dtrim) (nth 1 dtrim) (nth 2 dtrim) (nth 3 dtrim) ^C^C)
 (setvar "OSMODE" os)
 (princ)
 (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
Nghe tên tuổi anh Hoành khá lâu

Mong có dịp yết kiến

Tiện đây em có việc muốn nhờ anh:

 

Trên màn hình cad có rát nhiều các hình chữ nhật (cùng layer, REC, to nhỏ khác nhau, Có thể cùng tỷ lệ đứng/tỷ lệ ngang)

Em cần 1 lisp có chức năng thế này: Khi gõ lệnh nó sẽ đánh số thứ tự tăng dần từ trái qua phải từ trên xuống duối vào giữa các hình chũ nhật

 

moyeu.jpg

Đuơịc không ạ??

 

Giúp em với, em nghĩ sẽ có nhiều anh em dùng tới lissp này của bác

 

 

Bác xem thử giống ý bác chưa nhá. Mà ở đây không cần là chữ nhật. Cứ đa giác 4 cạnh là được

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ham sap xep theo tu tu so tang dan
(defun sort_num (LLLL / nLLL sort_order flag1)
 (repeat (length LLLL)
(setq sort_order
   (append sort_order (list
			(apply 'min LLLL)								
  )	 )				  )
(setq flag1 nil)
(foreach x LLLL
  (if (or (not (= x (apply 'min LLLL)))		
		flag1					
	 )
(setq nlll (append nlll (list x)))
(setq flag1 1)
  )
)
(setq llll nlll
  nlll nil )
 )
 (princ sort_order)
)
;ham tim trong tam dagiac 4 canh
(defun ttt(rec / i L lb1)
 (vl-load-com)
 (setq tt '())
 (setq sodinh 0)
 (setq i -1 L nil)
 (repeat (fix (1+ (vlax-curve-getEndParam rec)))
(setq i (1+ i) L (append L (list (vlax-curve-getPointAtParam rec i))))
 )
 (if (and (= (length L) 5)
   (equal (nth 0 L) (nth 4 L))
  )
(progn
  (setq lb1 (cdr L))
  (setq tt (list
	 (/ (apply '+ (mapcar 'car lb1)) 4.00)
	 (/ (apply '+ (mapcar 'cadr lb1)) 4.00)
	 0.0
		   )
	sodinh (length lb1)
	cao (- (apply 'max (mapcar 'cadr lb1)) (apply 'min (mapcar 'cadr lb1)))
  )
)
(prompt "\nKhông ph\U+1EA3i \U+0111a giác 4 c\U+1EA1nh!\n")
 )
 (princ)
 (princ)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;Ham chinh:
; yeu cau cac hinh chu nhat fai ve bang lenh REC hoac tao thanh bang polyline dong
(defun c:numrec(/ os mau ctexi j sscn ssx tt_list ss xlist)
 (setq os (getvar "OSMODE"))
 (setq sodinh 0)
 (while (or (/= sodinh 4) (= mau nil))
(setq mau (car (entsel "\nCh\U+1ECDn hình ch\U+1EEF nh\U+1EADt m\U+1EABu: ")))
(if mau (if (= (cdr (assoc 0 (entget mau))) "LWPOLYLINE") (ttt mau)))
 )
 (setq ctex (getreal "\nCao ch\U+1EEF b\U+1EB1ng bao nhiêu % cao hình ch\U+1EEF nh\U+1EADt: "))
 (setq ssx (ssget "_X" '((0 . "LWPOLYLINE"))))
 (setq i 0)
 (setq sscn (ssadd))
 (setq tt_list '())
 (while (< i (sslength ssx))
(ttt (ssname ssx i))
(if (and (= sodinh 4)
	 (= (cdr (assoc 8 (entget mau))) (cdr (assoc 8 (entget (ssname ssx i)))))
)
  (setq sscn (ssadd (ssname ssx i) sscn)
	tt_list (append tt_list (list tt))
  )
)
(setq i (1+ i))
 )
 (command "-style" "Numrec_style" "Arial" "" "" "" "" "" "" ^c^c)
 (setq xlist (mapcar 'car tt_list))
 (setq xlist (sort_num xlist))
 (setq i 0)
 (setq ss (ssadd))
 (while (< i (length xlist))
(setq j 0)
(while (< j (sslength sscn))
  (ttt (ssname sscn j))
  (if (= (car tt) (nth i xlist)) (setq ss (ssadd (ssname sscn j) ss)))
  (setq j (1+ j))
)	
(setq i (1+ i))
 )
 (setq j 0)
 (while (< j (sslength ss))
(ttt (ssname ss j))
(setvar "OSMODE" 0)
(command ".TEXT" "j" "mc" tt (* cao (/ ctex 100)) 0 (rtos (1+ j) 2 0))
(setvar "OSMODE" os)
(setq j (1+ j))
 )	

)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

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ể post yêu cầu về autolisp ở topic này.

Bác Hoành ơi cho em xin 1 cái lip : ví dụ trên bản vẽ của mình có 10 loại hatch khác nhau thì khi ra lệnh nó sẻ tạo ra 10 layẻ cùng tên hoặc khác tên với tên của hatch và gán cho mỗi loại hatch 1 layẻ đó được ko, 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
Bác xem thử giống ý bác chưa nhá. Mà ở đây không cần là chữ nhật. Cứ đa giác 4 cạnh là được

 

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;ham sap xep theo tu tu so tang dan
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

 

Thât tuyệt anh à, tiện cho em hỏi tý, Ví dụ Hình chữ nhật đó nằm trong 1 block thì sao nó lại không đuợc anh nhỉ!

Nếu đuợc thì tuyệt!

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
Đây là bài toán dựng hình đơn thuần. Dựng đường phân giác của 2 đoạn thẳng không giao nhau.

 

Bạn làm như sau:

1. Gọi 2 đường ban đầu là màu đỏ như trong hình.

2. Copy 1 đường vào chạm đường kia (đường mới có hình màu vàng - yellow)

3. Dựng phân giác của đường ở bước 2 với đường màu đỏ (đường mới dựng màu xanh cây - green). Cách dựng đường phân giác ở đây

4. Dựng đường vuông góc với đường phân giác ở bước 3, cắt cả 2 đường màu đỏ (đường dựng mới có màu xanh trời - cyan)

5. Dựng đường thẳng song song với đường bước 3 và đi qua trung điểm của đường ở bước 4 (đường mới dựng có màu xanh biển - blue).

 

dunghinh.gif

 

Đường ở bước 5 là đường phân giác của 2 đoạn thẳng ban đầu, cách đều cả 2 đoạn thẳng đó.

 

Cảm ơn Bác Nguyễn Hoành đã quan tâm.

 

Ý của Em đúng như Bác ssg nói đấy ạ. Em sẽ post 1 mẫu ví dụ em đang phải làm. Em sẽ trình bày rõ 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
Có lẽ bạn chưa thoả mãn với lời giải của anh Hoành. Ý bạn là lấy tim đường giao thông đúng không?

Nói chung:

1. Pline gồm nhiều đoạn thẳng và cung tròn nối tiếp nhau

2. Số segment của 2 lề đường có thể không bằng nhau

 

Theo ssg, bạn hãy post 1 file *.dwg mẫu lên, trong đó có vẽ vài con đường và tim đường chuẩn nhất theo cách làm (thủ công) của bạn. Lưu ý: không cần nhiều đường lắm nhưng chúng phải mang tính điển hìnhtổng quát.

Bạn đã post yêu cầu vài lần nhưng chưa có câu trả lời thoả đáng vì lý do đơn giản: bạn tiết kiệm lời quá! Hãy tìm cách diễn đạt để mọi người đều hiểu một cách chính xác. Xin nhớ rằng, người khác không phải là bạn, không thể hiểu chuyên môn, công việc bạn đang làm, cũng như ý đồ bạn muốn.

 

Chào Bác ssg!

 

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

 

Đây là cái tôi cần làm. Tôi có dữ liệu đường rồi, đây là đường giao thông. Nó có thể là Polyline hoặc 3DPolyline. Bây giờ nhiệm vụ của tôi là phải vẽ Đường Tâm, càng chính xác càng tốt. Hiện tại tôi đang vẽ ở mức tương đối như thế này thôi (có nhiều loại đường tâm từ layer 9501-9506).

 

Công việc của tôi còn nhiều, mong Các Bác 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

chào các bạn, mình có 1 vấn đề thế này mong các bạn giúp đỡ. số là mình hay phải gửi bản vẽ cho chủ đầu tư (để dữ bản quyền thì mình hay cho sang PDF ) nhưng mà trong 1 bản vẽ có nhiều bản nhỏ (cả trăm bản) mỗi bản phải cho sang 1 trang PDF ( nên kô dùng kô dùng phần mềm chuyển từ cad sang PDF đc, bạn nào biết cách hoặc có lisp nào có thể :

+ đặt block cho cả bản vẽ ấy rồi người khác chỉ có thể xem và in ra đc mà kô được chỉnh sử đc j. ví dụ như muốn chỉnh sửa block sẽ phải có mật khẩu như bảo vệ file vậy, kô bit có đc kô :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
Chào Bác ssg!

 

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

 

Đây là cái tôi cần làm. Tôi có dữ liệu đường rồi, đây là đường giao thông. Nó có thể là Polyline hoặc 3DPolyline. Bây giờ nhiệm vụ của tôi là phải vẽ Đường Tâm, càng chính xác càng tốt. Hiện tại tôi đang vẽ ở mức tương đối như thế này thôi (có nhiều loại đường tâm từ layer 9501-9506).

 

Công việc của tôi còn nhiều, mong Các Bác giúp đỡ.

Cho trước 2 đường 3DPolyline, cái gọi là "đường tâm" của 2 đường này là một đường như thế nào? Lẽ ra bạn phải định nghĩa, mô tả về nó một cách chính xác chứ không thể nói chung chung được. Hiểu đúng định nghĩa mới có thể xây dựng thuật giải đúng cho chương trình.

 

Tạm thời, bạn dùng thử chương trình dưới đây. Tên lệnh VTD:

 

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

 

Diễn giải:

Cho trước 2 lề đường, là 2 đối tượng 3DPolyline. Chương trình hoạt động như sau (các ký hiệu xem minh hoạ trong bản vẽ kèm theo):

1. User chọn lề đường 1, gọi là đường C1. Chọn lề đường 2, gọi là C2

2. User tuỳ chọn số đoạn chia n. Mặc định là <50>, nếu chấp nhận chỉ cần Enter

3. Chương trình chia C1 ra thành n đoạn có chiều đài bằng nhau bằng các điểm chia P1

4. Xét 1 điểm P1 nào đó. Chương trình tự xác định được 1 điểm P2 thuộc C2, sao cho khoảng cách P1P2 cực tiểu

5. Lấy trung điểm PM của P1P2. Tập hợp các điểm PM chính là đường tâm của con đường, được thể hiện bằng 3DPolyline

 

Lưu ý:

1. C1 và C2 phải có chiều dài "xem xem" nhau. Nếu chênh lệch một cách bất thường, kết quả sẽ giảm độ chính xác. Trường hợp bất đắc dĩ, phải chọn lề đường ngắn hơn trước (lề đường 1)

2. Mỗi lần chạy lệnh, chương trình chỉ thực hiện với 1 cặp đường 3Dpolyline nên không xử lý được tại các vị trí giao lộ. Bạn phải làm thủ công bổ sung các chỗ này.

3. Nếu kết quả chạy chương trình chưa đúng ý, bạn phải mô tả chính xác "cái gọi là đường tâm" như đã nói trên, cũng như các yêu cầu cụ thể mà bạn muốn, ssg sẽ sửa chương trình lại. Tuy nhiên, xin nói trước, ssg sẽ không làm lại lần thứ 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
Khách
Chủ đề này bây giờ đã bị đóng lại để trả lời thêm.

×