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

[Yêu cầu] lisp vẽ mặt cắt từ bình đồ

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

Các anh giúp em một lisp như sau:

Từ một bình đồ ta có thể vạch một đường bất kỳ để xuất ra mặt cắt, từ các mặt cắt đó để tính khối lượng nằm giữa 2 mặt cắt đã xuất ra.

Em đang tìm hiểu phần mềm autodesk landesktop 2004 anh nào có tài liệu hướng dẫn sử dụng bằng tiếng việt cho em được không? đang bí quá.

Chân thành cảm ơn các anh quan tâ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
Các anh giúp em một lisp như sau:

Từ một bình đồ ta có thể vạch một đường bất kỳ để xuất ra mặt cắt, từ các mặt cắt đó để tính khối lượng nằm giữa 2 mặt cắt đã xuất ra.

Em đang tìm hiểu phần mềm autodesk landesktop 2004 anh nào có tài liệu hướng dẫn sử dụng bằng tiếng việt cho em được không? đang bí quá.

Chân thành cảm ơn các anh quan tâm.

 

 

Đây là bài tóan gặp trong thiết kế đường:

Phân tích bài tóan ta sẽ gặp các vấn đề sau:

1.Bình đồ (mặt bằng) được thể hiện như thế nào:

Ở VN chuyện các bác khảo sát đi mia chưa được thống nhất, có bác thể hiện cao độ tại một điểm là một text nên mặt bằng cũng chỉ là bản vẽ ký hiệu thôi, có bác thể hiện được 3D (toa độ xyz rõ ràng) nhưng "TEXT" thể hiện cao độ là block hay là text đơn thuần - Với quan niệm một Developer thì tôi thấy là một Block có ATT thì tốt hơn vì có thể kiểm sóat được.

2. Cao độ một điểm được tính như thế nào:

Có người quan niệm cao độ một điểm là lấy cao độ điểm gần nhất hoặc là giao điểm của một đường song song với trục Z với mặt phẳng đi qua ba điểm gần nhất.

3. Hình dạng mặt cắt được định nghĩa như thế nào - Trong Nova thì mặt cắt được khai báo theo quy định của chương trình.

Tuy nhiên cũng có người muốn được định nghĩa mắt cắt bằng cách vẽ mặt cắt điển hình và để chương trình tự nhận ra.

...

Đây là bài tóan tương đối phức tạp

 

Nếu cần xử lý bài tóan này thì dùng NOVA hay SDR hoặc Eagle Point là cực chuẩn rồ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
Đây là bài tóan gặp trong thiết kế đường:

Phân tích bài tóan ta sẽ gặp các vấn đề sau:

1.Bình đồ (mặt bằng) được thể hiện như thế nào:

Ở VN chuyện các bác khảo sát đi mia chưa được thống nhất, có bác thể hiện cao độ tại một điểm là một text nên mặt bằng cũng chỉ là bản vẽ ký hiệu thôi, có bác thể hiện được 3D (toa độ xyz rõ ràng) nhưng "TEXT" thể hiện cao độ là block hay là text đơn thuần - Với quan niệm một Developer thì tôi thấy là một Block có ATT thì tốt hơn vì có thể kiểm sóat được.

2. Cao độ một điểm được tính như thế nào:

Có người quan niệm cao độ một điểm là lấy cao độ điểm gần nhất hoặc là giao điểm của một đường song song với trục Z với mặt phẳng đi qua ba điểm gần nhất.

3. Hình dạng mặt cắt được định nghĩa như thế nào - Trong Nova thì mặt cắt được khai báo theo quy định của chương trình.

Tuy nhiên cũng có người muốn được định nghĩa mắt cắt bằng cách vẽ mặt cắt điển hình và để chương trình tự nhận ra.

...

Đây là bài tóan tương đối phức tạp

 

Nếu cần xử lý bài tóan này thì dùng NOVA hay SDR hoặc Eagle Point là cực chuẩn rồi.

 

anh vndesperados có tiện ích nào về ngành trắc đạc, khảo sát. . . xin up lên cho anh em chuyên ngành địa hình tham khảo 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

Đây là một bài tóan tương đối khó. Không chỉ một vài đọan LISP là có thể thực hiện được. Ở vị trí là người dùng nên có thể bạn chỉ nghĩ là làm được việc này không có nhiều khó khăn, nhưng ở một vị trí là developer tôi thấy cần có sự hợp tác của nhiều thành viên trong diễn đàn này :s_dead: . Theo những gì mà tôi biết được, tôi đề nghị như sau, chúng ta sẽ chia nhỏ thành các "function main":

1. Đọc dữ liệu mặt bằng trên bản vẽ AutoCad.

Vì bản vẽ mặt bằng có thể không chuẩn từ nhiều nguồn nên cần có một công cụ chuẩn hóa:

VD: nên đưa tất cả các Text chứa cao độ thành block có ATT thể hiện cao độ (--> có thể xây dựng các đường đồng mức nếu cần thiết)

2. Nội suy cao độ tại một điểm bất kỳ từ cao độ các điểm lân cận (ít nhất là ba điểm)

3. Xây dựng quy định về cách định nghĩa mặt cắt điển hình.

Có thể bằng cách khai báo theo một quy tắc (cách này dễ cho Developer nhưng khó cho người dùng)

Hoặc vẽ mặt cắt điển hình rồi có một function để phân tích (Cách này thì khó cho Developer nhưng dễ cho người dùng)

Bản thân tôi sẽ chon cách dưới vì cái này "Một lần và mãi mãi" còn cách trên cũng "Một lần và mãi mãi" luôn.

4. ....

:ph34r:

 

Từ các "funtion main" chúng ta lại chia nhỏ thành các "fution code"

 

1. Đọc dữ liệu mặt bằng trên bản vẽ AutoCad

1.1: Xác định text cao độ.

1.2 Xác định giá trị cao độ

1.2 Chuẩn hóa cách thể hiện cao độ (Số hóa bản đồ)

(Cái này tôi làm rồi)

2. Nội suy cao độ tại một điểm bất kỳ từ cao độ các điểm lân cận (ít nhất là ba điểm)

2.1 Xác đinh ba điểm gần nhất với điểm cần nội suy. Điiểm cần nội suy có thể nằm trong tam giác ba điểm xác định hay nằm ngòai

2.2 Nội suy cao độ (Cái này đã làm được thuật tóan)

3. Xây dựng quy định về cách định nghĩa mặt cắt điển hình.

....

Mời ý kiến của các 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
anh vndesperados có tiện ích nào về ngành trắc đạc, khảo sát. . . xin up lên cho anh em chuyên ngành địa hình tham khảo với. Thanks

 

Xin đính chính lại một lần nữa:

Tôi là Developer chuyên về JAVA NETWORKING, không phải là dân dùng CAD hay là CAD Developer.

LISP chỉ là yêu thích thôi

Vậy nên tôi không có nhiều đồ chơi về CAD lắm đâu. Tuy nhiên nếu bạn cần gì thì cứ POST lên đây một cách cụ thể. Tôi hi vọng có thể giúp được bạ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
Xin đính chính lại một lần nữa:

Tôi là Developer chuyên về JAVA NETWORKING, không phải là dân dùng CAD hay là CAD Developer.

LISP chỉ là yêu thích thôi

Vậy nên tôi không có nhiều đồ chơi về CAD lắm đâu. Tuy nhiên nếu bạn cần gì thì cứ POST lên đây một cách cụ thể. Tôi hi vọng có thể giúp được bạn

 

bạn có thể giúp tôi viết 1 chương trình lên các điểm mia chi tiết dùng để vẽ bình đồ với đối tượng xuất ra là block cao độ có Att. 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 anh giúp em một lisp như sau:

Từ một bình đồ ta có thể vạch một đường bất kỳ để xuất ra mặt cắt, từ các mặt cắt đó để tính khối lượng nằm giữa 2 mặt cắt đã xuất ra.

Em đang tìm hiểu phần mềm autodesk landesktop 2004 anh nào có tài liệu hướng dẫn sử dụng bằng tiếng việt cho em được không? đang bí quá.

Chân thành cảm ơn các anh quan tâm.

 

 

Tôi có cách nhưng chưa hay lắm

Bạn có thể cho tôi địa chỉ Email của bạn. Có thể sẽ giúp bạn được đôi chút

vantimua2003@gmail.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
Tôi có cách nhưng chưa hay lắm

Bạn có thể cho tôi địa chỉ Email của bạn. Có thể sẽ giúp bạn được đôi chút

vantimua2003@gmail.com

Cảm ơn bạn trước. Mail của tôi là: saoemoi@gmail.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

Xin chào anh em trong diễn đàn.

Tôi là thành viên mới, mong được sự chỉ giáo của các đại ca nghe

Vấn đề của tôi như thế này:

1- Tôi có một loạt các đường thẳng song song nhưng không cách đều

và một đường thẳng cắt ngang các đường thẳng song song đó.

2 - Tôi muốn viết một chương trình tự động tính khoảng cách các giao điểm theo trục X và trục Y

Mong sớm được giú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

Lisp vẽ mặt cắt từ bình đồ:

Lệnh VMC.

 

;; Bien toan cuc deltaH
(defun c:vmc ( / sel)
 (defun luuos ()
   (setq
     HOANH_OSMODE   (getvar "OSMODE")
     HOANH_AUTOSNAP (getvar "AUTOSNAP")
   )
 )
 (defun traos ()
   (if	HOANH_OSMODE
     (setvar "OSMODE" HOANH_OSMODE)
   )
   (if	HOANH_AUTOSNAP
     (setvar "AUTOSNAP" HOANH_AUTOSNAP)
   )
 )
 (defun GiaoDT	(ent1 ent2)
   (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
   )
 )
 (defun NhapdeltaH( / tmp)    
   (while (not tmp)
     (setq tmp (getdist "\nVao khoang cach deltaH: "))
     (if (not tmp)
(setq tmp deltaH)
     )
   )
   (setq deltaH tmp)
 )
 ;;;---------------------- Main --------------------------------
 (princ "\nVMC © CADViet.com")  
 (if (not deltaH)
   (NhapdeltaH)
 )  
 (while (not sel)
   (setq	sel  (entsel "\nVao line mat cat (hoac nhan Enter de nhap deltaH): ")
entl (car sel)
   )
   (if (not sel)
     (NhapdeltaH)
   )
 )
 (if (= "LINE" (cdr (assoc 0 (entget entl))))
   (progn
     (setq
p  (cadr sel)
tt (entget entl)
p1 (cdr (assoc 10 tt))
p2 (cdr (assoc 11 tt))
     )
     (if (> (distance p p1)
     (distance p p2)
  )
(setq p	 p1
      p1 p2
      p2 p
)
     )
     (luuos)
     (setvar "osmode" 0)
     (command ".zoom" p1 p2)
     (setq
sspl  (ssget "F"
	     (LIST P1 P2)
	     '((-4 . "		       (0 . "LWPOLYLINE")
	       (0 . "SPLINE")
	       (-4 . "OR>")
	      )
      )
tappl (ss2ent sspl)
goc   (+ (angle p1 p2) (/ pi 2.0))
index 0
tappn nil
     )
     (command ".zoom" "p")
     (foreach entpl tappl
(if (setq tmp (giaodt entpl entl))
  (setq
    p	  (car tmp)
    pn	  (polar p goc (* deltaH index))
    index (1+ index)
    tappn (append tappn (list pn))
  )
)
     )
     (command ".pline")
     (foreach pn tappn
(command pn)
     )
     (command "")
     (traos)
   )
 )
 (princ)
)

(vl-load-com)
(princ "\nVe mat cat tu binh do © CADViet.com 2007")
(princ "\nDung lenh VMC de bat dau!")
(princ)

 

Hướng dẫn sử dụng:

- Lệnh VMC vẽ mặt cắt của địa hình theo vết cắt cho trước. Địa hình được mô tả bằng các đối tượng pline hay spline có z=0 là đường đồng mức. Vết cắt là một line.

- Khi sử dụng lệnh lần đầu tiên, chương trình sẽ yêu cầu nhập deltaH. Các lần sau, chương trình sẽ không yêu cầu nhập lại deltaH. Muốn hiệu chỉnh giá trị deltaH, bạn nhấn enter khi chương trình hỏi vết cắt.

- Mỗi lần sử dụng, chương trình sẽ yêu cầu chọn 1 line làm vết cắt. Chương trình sẽ vẽ mặt cắt theo vết cắt và deltaH đã chỉ định.

  • 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
Lisp vẽ mặt cắt từ bình đồ:

Lệnh VMC.

 

;; Bien toan cuc deltaH
(defun c:vmc ( / sel)
 (defun luuos ()
   (setq
     HOANH_OSMODE   (getvar "OSMODE")
     HOANH_AUTOSNAP (getvar "AUTOSNAP")
   )
 )
 (defun traos ()
   (if	HOANH_OSMODE
     (setvar "OSMODE" HOANH_OSMODE)
   )
   (if	HOANH_AUTOSNAP
     (setvar "AUTOSNAP" HOANH_AUTOSNAP)
   )
 )
 (defun GiaoDT	(ent1 ent2)
   (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
   )
 )
 (defun NhapdeltaH( / tmp)    
   (while (not tmp)
     (setq tmp (getdist "\nVao khoang cach deltaH: "))
     (if (not tmp)
(setq tmp deltaH)
     )
   )
   (setq deltaH tmp)
 )
 ;;;---------------------- Main --------------------------------
 (princ "\nVMC © CADViet.com")  
 (if (not deltaH)
   (NhapdeltaH)
 )  
 (while (not sel)
   (setq	sel  (entsel "\nVao line mat cat (hoac nhan Enter de nhap deltaH): ")
entl (car sel)
   )
   (if (not sel)
     (NhapdeltaH)
   )
 )
 (if (= "LINE" (cdr (assoc 0 (entget entl))))
   (progn
     (setq
p  (cadr sel)
tt (entget entl)
p1 (cdr (assoc 10 tt))
p2 (cdr (assoc 11 tt))
     )
     (if (> (distance p p1)
     (distance p p2)
  )
(setq p	 p1
      p1 p2
      p2 p
)
     )
     (luuos)
     (setvar "osmode" 0)
     (command ".zoom" p1 p2)
     (setq
sspl  (ssget "F"
	     (LIST P1 P2)
	     '((-4 . "<OR")
	       (0 . "LWPOLYLINE")
	       (0 . "SPLINE")
	       (-4 . "OR>")
	      )
      )
tappl (ss2ent sspl)
goc   (+ (angle p1 p2) (/ pi 2.0))
index 0
tappn nil
     )
     (command ".zoom" "p")
     (foreach entpl tappl
(if (setq tmp (giaodt entpl entl))
  (setq
    p	  (car tmp)
    pn	  (polar p goc (* deltaH index))
    index (1+ index)
    tappn (append tappn (list pn))
  )
)
     )
     (command ".pline")
     (foreach pn tappn
(command pn)
     )
     (command "")
     (traos)
   )
 )
 (princ)
)

(vl-load-com)
(princ "\nVe mat cat tu binh do © CADViet.com 2007")
(princ "\nDung lenh VMC de bat dau!")
(princ)

 

Hướng dẫn sử dụng:

- Lệnh VMC vẽ mặt cắt của địa hình theo vết cắt cho trước. Địa hình được mô tả bằng các đối tượng pline hay spline có z=0 là đường đồng mức. Vết cắt là một line.

- Khi sử dụng lệnh lần đầu tiên, chương trình sẽ yêu cầu nhập deltaH. Các lần sau, chương trình sẽ không yêu cầu nhập lại deltaH. Muốn hiệu chỉnh giá trị deltaH, bạn nhấn enter khi chương trình hỏi vết cắt.

- Mỗi lần sử dụng, chương trình sẽ yêu cầu chọn 1 line làm vết cắt. Chương trình sẽ vẽ mặt cắt theo vết cắt và deltaH đã chỉ định.

 

Cảm ơn anh Hoành đã share với dân trắc địa, nhưng tôi sử dụng gặp lỗi như sau:

 

Command: vmc

VMC © CADViet.com

Vao line mat cat (hoac nhan Enter de nhap deltaH): .zoom

Specify corner of window, enter a scale factor (nX or nXP), or

[All/Center/Dynamic/Extents/Previous/Scale/Window] <real time>:

Specify opposite corner:

Command: ; error: no function definition: SS2ENT

 

mong anh hướng dẫn. 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ảm ơn anh Hoành đã share với dân trắc địa, nhưng tôi sử dụng gặp lỗi như sau:

 

Command: vmc

VMC © CADViet.com

Vao line mat cat (hoac nhan Enter de nhap deltaH): .zoom

Specify corner of window, enter a scale factor (nX or nXP), or

[All/Center/Dynamic/Extents/Previous/Scale/Window] :

Specify opposite corner:

Command: ; error: no function definition: SS2ENT

 

mong anh hướng dẫn. Thanks

Xin lỗi tôi sơ suất, SS2ENT là hàm thường dùng, nên có sẵn trong ACAD của tôi.

 

Lisp mới sau khi sửa lại như sau:

;; Bien toan cuc deltaH
(defun c:vmc ( / sel)
(defun ss2ent(ss / sodt index lstent)
 (setq
   sodt (cond
   (ss (sslength ss))
   (t 0)
 )
   index 0
 )
 (repeat sodt
   (setq ent (ssname ss index)
  index (1+ index)
  lstent (cons ent lstent)
   )
 )
 (reverse lstent)
)
(defun luuos ()
(setq
HOANH_OSMODE (getvar "OSMODE")
HOANH_AUTOSNAP (getvar "AUTOSNAP")
)
)
(defun traos ()
(if HOANH_OSMODE
(setvar "OSMODE" HOANH_OSMODE)
)
(if HOANH_AUTOSNAP
(setvar "AUTOSNAP" HOANH_AUTOSNAP)
)
)
(defun GiaoDT (ent1 ent2)
(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
)
)
(defun NhapdeltaH( / tmp)
(while (not tmp)
(setq tmp (getdist "\nVao khoang cach deltaH: "))
(if (not tmp)
(setq tmp deltaH)
)
)
(setq deltaH tmp)
)
;;;---------------------- Main --------------------------------
(princ "\nVMC © CADViet.com")
(if (not deltaH)
(NhapdeltaH)
)
(while (not sel)
(setq sel (entsel "\nVao line mat cat (hoac nhan Enter de nhap deltaH): ")
entl (car sel)
)
(if (not sel)
(NhapdeltaH)
)
)
(if (= "LINE" (cdr (assoc 0 (entget entl))))
(progn
(setq
p (cadr sel)
tt (entget entl)
p1 (cdr (assoc 10 tt))
p2 (cdr (assoc 11 tt))
)
(if (> (distance p p1)
(distance p p2)
)
(setq p p1
p1 p2
p2 p
)
)
(luuos)
(setvar "osmode" 0)
(command ".zoom" p1 p2)
(setq
sspl (ssget "F"
(LIST P1 P2)
'((-4 . "(0 . "LWPOLYLINE")
(0 . "SPLINE")
(-4 . "OR>")
)
)
tappl (ss2ent sspl)
goc (+ (angle p1 p2) (/ pi 2.0))
index 0
tappn nil
)
(command ".zoom" "p")
(foreach entpl tappl
(if (setq tmp (giaodt entpl entl))
(setq
p (car tmp)
pn (polar p goc (* deltaH index))
index (1+ index)
tappn (append tappn (list pn))
)
)
)
(command ".pline")
(foreach pn tappn
(command pn)
)
(command "")
(traos)
)
)
(princ)
)

(vl-load-com)
(princ "\nVe mat cat tu binh do © CADViet.com 2007")
(princ "\nDung lenh VMC de bat dau!")
(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
Xin lỗi tôi sơ suất, SS2ENT là hàm thường dùng, nên có sẵn trong ACAD của tôi.

 

Lisp mới sau khi sửa lại như sau:

;; Bien toan cuc deltaH
(defun c:vmc ( / sel)
(defun ss2ent(ss / sodt index lstent)
 (setq
   sodt (cond
   (ss (sslength ss))
   (t 0)
 )
   index 0
 )
 (repeat sodt
   (setq ent (ssname ss index)
  index (1+ index)
  lstent (cons ent lstent)
   )
 )
 (reverse lstent)
)
(defun luuos ()
(setq
HOANH_OSMODE (getvar "OSMODE")
HOANH_AUTOSNAP (getvar "AUTOSNAP")
)
)
(defun traos ()
(if HOANH_OSMODE
(setvar "OSMODE" HOANH_OSMODE)
)
(if HOANH_AUTOSNAP
(setvar "AUTOSNAP" HOANH_AUTOSNAP)
)
)
(defun GiaoDT (ent1 ent2)
(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
)
)
(defun NhapdeltaH( / tmp)
(while (not tmp)
(setq tmp (getdist "\nVao khoang cach deltaH: "))
(if (not tmp)
(setq tmp deltaH)
)
)
(setq deltaH tmp)
)
;;;---------------------- Main --------------------------------
(princ "\nVMC © CADViet.com")
(if (not deltaH)
(NhapdeltaH)
)
(while (not sel)
(setq sel (entsel "\nVao line mat cat (hoac nhan Enter de nhap deltaH): ")
entl (car sel)
)
(if (not sel)
(NhapdeltaH)
)
)
(if (= "LINE" (cdr (assoc 0 (entget entl))))
(progn
(setq
p (cadr sel)
tt (entget entl)
p1 (cdr (assoc 10 tt))
p2 (cdr (assoc 11 tt))
)
(if (> (distance p p1)
(distance p p2)
)
(setq p p1
p1 p2
p2 p
)
)
(luuos)
(setvar "osmode" 0)
(command ".zoom" p1 p2)
(setq
sspl (ssget "F"
(LIST P1 P2)
'((-4 . "<OR")
(0 . "LWPOLYLINE")
(0 . "SPLINE")
(-4 . "OR>")
)
)
tappl (ss2ent sspl)
goc (+ (angle p1 p2) (/ pi 2.0))
index 0
tappn nil
)
(command ".zoom" "p")
(foreach entpl tappl
(if (setq tmp (giaodt entpl entl))
(setq
p (car tmp)
pn (polar p goc (* deltaH index))
index (1+ index)
tappn (append tappn (list pn))
)
)
)
(command ".pline")
(foreach pn tappn
(command pn)
)
(command "")
(traos)
)
)
(princ)
)

(vl-load-com)
(princ "\nVe mat cat tu binh do © CADViet.com 2007")
(princ "\nDung lenh VMC de bat dau!")
(princ)

-------------------------------------

Tôi đã copy chương trình vẽ mặt cắt từ binhg đồ và chạy trong Auto CAD nhưng kết quả chỉ cho một đường Pline, không thấy mặt cắt đâu cả. Kính mong Mr. Hoành chỉ giáo. Tôi thực sự cần chương trình này.

Xin 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
-------------------------------------

Tôi đã copy chương trình vẽ mặt cắt từ binhg đồ và chạy trong Auto CAD nhưng kết quả chỉ cho một đường Pline, không thấy mặt cắt đâu cả. Kính mong Mr. Hoành chỉ giáo. Tôi thực sự cần chương trình này.

Xin cảm ơn

Pline đó chính là phôi của mặt cắt.

Chương trình chỉ cho ra kết quả mặt cắt dạngphôi chứ không cho ra một mặt cắt dạng đầy đủ để dùng luôn. Muốn dùng được, bạn phải thêm các kích thước cao độ,...

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 đã copy chương trình vẽ mặt cắt từ binhg đồ và chạy trong Auto CAD nhưng kết quả chỉ cho một đường Pline, không thấy mặt cắt đâu cả. Kính mong Mr. Hoành chỉ giáo. Tôi thực sự cần chương trình này.

Xin cảm ơn

Xin chào các bác. tôi là một thành viên mới, kiến thức về slip còn kém nhưng vấn đề mà các bác đưa ra hồi xưa đi học bọn tôi giải quyết bằng cách dùng phần mềm softdesk 8. Giải quyết vấn đề các bác nêu ra là lên mặt cắt từ bình đồ và tính khối lượng cực kỳ chính xác và đơn giản. Nó là một phần mêm chạy ngay trên nền cad 14( đấy là phiên bản tôi dùng cách đây 3 năm hồi còn là SV) bay giờ chắc có phiên bản chạy trên cad 2004 rồi.Phần mềm này rất hay có thể tính khối lượng đào đắp, san lấp, vẽ đường đồng mức cho bản đồ, lên mặt cắt cực nhanh với khối lượng không hạn chế. các bác có thê search trên google tim phần mềm này. chúc 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

Nói chung thì đây là 1 vấn đề cũ và thường gặp bên cầu đường hay trắc địa...nếu là dân trong nghề thì đương nhiên sẽ có lúc dùng qua các phần mềm hỗ trợ để tính toán khối lượng, vẽ bình đồ, xuất mặt cắt dọc, mặt cắt ngang,...ít ai đi tìm hiểu để viết code hay lisp thực hiện các công việc trên (trừ khi muốn tìm hiểu sâu thêm các công cụ ấy đã làm điều đó như thế nào :-)...)

thường thì dùng các công cụ đã có sẵn, cái này khá chính xác và đơn giản.

bạn có thể sử dụng các phần mềm như CAD Land Desktop, softdesk(cái này cũ), Liscad Plus (bên trắc địa),Surfer,SRD...mấy cái này đều có thể giải quyết các câu hỏi bạn đặt ra. :bigsmile:

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ác!

Mình là thành viên mới, cũng đang công tác trong lĩnh vực kỹ thuật địa chất nên việc thường xuyên phải cắt các mặt cắt dựa trên các bình đồ có sẵn một cách nhanh tróng sã giải quyết cho mình được rất nhiều khâu.

Và mình cũng đang tập tành về lisp nữa tuy nhiên vẫn chỉ là một chicken mà thôi! Hì hì!

Trước tiên, em rất cám ơn Mr Nguyen Hoanh về sự đóng góp. Tiếp đến là việc em load vào mà không nhận lệnh VMC, không biết vì lý do gì - Cad 2008.

Thank nhiều hơn nữa nếu có bác nào có thể phát triển thêm nữa.

Chúc cho diễn đàn phát triển mạnh!

 

{Bài viết đầu tay}

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 đã copy chương trình vẽ mặt cắt từ binhg đồ và chạy trong Auto CAD nhưng kết quả chỉ cho một đường Pline, không thấy mặt cắt đâu cả. Kính mong Mr. Hoành chỉ giáo. Tôi thực sự cần chương trình này.

Xin cảm ơn

anh Hoành ơi cho em hỏi sao em làm đúng như thế mà máy em lại báo lỗi như thế này:

 

" APPLOAD ve mat cat.lsp successfully loaded.

Command: ; error: misplaced dot on input

Command: "

anh giúp em vớ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

Pline đó chính là phôi của mặt cắt.

Chương trình chỉ cho ra kết quả mặt cắt dạngphôi chứ không cho ra một mặt cắt dạng đầy đủ để dùng luôn. Muốn dùng được, bạn phải thêm các kích thước cao độ,...

bác Hoành có thể giúp em thêm các kick thước cao độ... để thàh mặt cắt được ko ạ

em cũng đang rất cần chương trình này lắ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

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

×