Đến nội dung


Hình ảnh
* * * - - 2 Bình chọn

Viết Lisp theo yêu cầu


  • Chủ đề bị khóa Chủ đề bị khóa
2780 replies to this topic

#2661 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 25 August 2009 - 09:43 AM

Cảm ơn Thiêp nhiều, cái này dùng được 90% rồi.
Khi dùng mình vấn đề như thế này: Đường giới hạn vét có thêm một đoạn không cắt đường polyline (thực ra nó là đường trồng cỏ) cho nên khi quét, nếu quét luôn nó thì lisp sẽ không hiều. Còn nếu mình pick từng đường một thì lisp chạy được nhưng cũng có một số mặt cắt bị lỗi nhưng làm thế này thì nó sẽ lâu hơn là mỗi mặt cắt mình quét luôn 1lần. Nếu thiêp sữa được để quét một lần càng tốt không thì mình sẽ pick từng đường một cũng được
Còn ý tưởng của mình là thay vì mình quét từng mặt cắt mình sẽ quét tấc cả các mặt cắt luôn không biết như thế có khó qúa không? Nếu không thể quét tấc cả thì mình quét từng mặt cắt như thế cũng nhanh lằm rồi. Chúc sức khỏe! file test: http://www.cadviet.c...es/2/tnct_3.dwg

Hoan có chắc là quét luôn đường trồng cỏ của Hoan thì lisp bị lỗi không? Lisp này chỉ xử lý 1 đường tự nhiên là LWPOLYLINE và 2 hai đường giới hạn là LINE cắt qua đường tự nhiên. còn 2 line là đường trồng cỏ không cắt qua đường tự nhiên thì không sao.
Còn Hoan muốn lisp chọn hết 1 lúc các loại đường trên một lúc thì cũng sẽ có lisp, nhưng Thiep e rằng nếu số lượng mặt cắt quá lớn, hàng trăm, ngàn cái, thì lisp sẽ chậm và nếu có 1 mặt cắt nào đó không phù hợp với yêu cầu của Lisp (như Thiep đã từng phân tich có 5 trường hợp xảy ra) thì lisp sẽ báo lỗi ngay.
  • 1

#2662 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 25 August 2009 - 09:57 AM

To : tivanteo
Bạn chạy thử lisp xác định điểm trên Curve (LINE,ARC, PLINE và SPLINE hở) có chiều dài xác định từ 1 điểm cho trước.

(defun c:test(/ vl ov Ent isClosed dis dis0 pt dis_pt dis_max pt1 pt2);
(if (and (setq Ent (car (entsel "\nChon doi tuong :")))
(wcmatch (cdr (assoc 0 (entget ent))) "*LINE,ARC")
(not (setq isClosed (vlax-curve-isClosed ent)))
)
(progn
(command "undo" "be")
(setq vl '("osmode" "orthomode" "cmdecho") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(setvar "osmode" 123)(setvar "orthomode" 0) (setvar "cmdecho" 0)
(setq pt (getpoint (vlax-curve-getStartPoint Ent) "\nChon diem goc :") )
(if (vlax-curve-getDistAtPoint ent pt)
(progn
(setq dis_pt (vlax-curve-getDistAtPoint Ent pt)
dis0 (vlax-curve-getDistAtParam Ent (vlax-curve-getEndParam Ent))
dis_max (max (- dis0 dis_pt) dis_pt)
dis (getreal (strcat "\nNhap chieu dai <" (rtos dis_max) "> :") )
)
(if (<= dis dis_max)
(progn
(if (setq pt1 (vlax-curve-getPointAtDist Ent (- dis_pt dis)))
(progn
(princ (strcat "\n Point X = " (rtos(car pt1)) "; Y = " (rtos(cadr pt1))))
(entmake (list '(0 . "POINT")(cons 10 pt1)) ) ))
(if (setq pt2 (vlax-curve-getPointAtDist Ent (+ dis_pt dis)))
(progn
(princ (strcat "\n Point X = " (rtos(car pt2)) "; Y = " (rtos(cadr pt2))))
(entmake (list '(0 . "POINT")(cons 10 pt2)) )) )
)
(alert "Khong ton tai diem voi thong so da nhap !")
)
)
)
(mapcar 'setvar vl ov) ; reset Sys Vars
(command "undo" "e")
)
(if isClosed
(alert "List khong chay duoc tren doi tuong kin ")
(alert "Khong chon duoc doi tuong !")))
(princ))

To : moihoclisp
Bạn chạy thử lisp tìm tọa độ Xmin, Ymin, Xmax, Ymax của 1 đối tượng.
Sau đó bạn có thể phát triển Code cho các đối tượng trên bản vẽ
(defun C:test(/ vl ov ent ll ur oo)
(if (setq Ent (car (entsel "\nChon doi tuong :")))
(progn
(command "undo" "be")
(setq vl '("osmode" "cmdecho") ; Sys Var list
ov (mapcar 'getvar vl)) ; Get Old values
(mapcar 'setvar vl '(0 0))
(vl-load-com)
(vla-getBoundingBox (vlax-ename->vla-Object ent) 'll 'ur)
(setq ll (vlax-safearray->list ll)
ur (vlax-safearray->list ur)
)
(princ (strcat "\n Point_Min X = " (rtos(car ll)) "; Y = " (rtos(cadr ll))))
(princ (strcat "\n Point_Max X = " (rtos(car ur)) "; Y = " (rtos(cadr ur))))
(entmake (list '(0 . "POINT")(cons 10 ll)) )
(entmake (list '(0 . "POINT")(cons 10 ur)) )
(mapcar 'setvar vl ov) ; reset Sys Vars
(command "undo" "e")
)
(alert "Khong chon duoc doi tuong !")
)
)

@Gia_bach, lisp thứ 1 cũng có cách để lisp chạy trên đường kín đó bạn.
Lisp thứ 2, nếu là đường Line, hoặc Pline có ll và ur trùng với điểm đầu và cuối của Pline thì đúng. Còn nếu Pline có nhiều điểm "lồi" cao hơn UR hay điểm "lõm" thấp hơn LL, thì lisp hiểu sai ngay.
  • 0

#2663 tomboy

tomboy

    biết vẽ polygon

  • Members
  • PipPip
  • 72 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 25 August 2009 - 10:17 AM

Các bạn giúp mình sửa lại cái lisp chạy Trắc dọc cống .
*Hiện trạng:
Lisp này dùng để vẽ trắc dọc cống
-Sau khi nhập các số liệu thiết kế vào five của Excel sau đó save as chúng lại dưới dạng đuôi .prn
-Từ Autocad R14 AP lisp TDC2005-v9.lsp, nhập lệnh tdc rồi mở five vừa save thi => bve TDOC
(lisp này chạy được khi cad R14 có font ( Vn_vni.shx)
*Sửa chữa:
-Vì lisp này chỉ chạy ổn định trên cad R14 còn các CAD khác thì 1 là chạy không được ,2 là bị lỗi do đó nhờ các bạn trên diễn đàn CADViet chuyển giúp lisp này chạy trên Cad2007 và không phụ thuộc vào font trên .
Nếu lisp này hoàn thiện nó sẽ giúp ích rất nhiều cho các bạn làm bên mảng thoát nước .
-Rất mong được sự giúp đỡ của các anh em trên diễn đàn và sớm nhận được hồi âm.
Thân chào
Đây là five mình đã upload
http://www.cadviet.c...files/2/tdc.zip

mình sửa lại cho bạn rồi nè, mình thêm cả phần lựa chọn text style cho bạn đấy để bạn đỡ phụ thuộc khi máy của bạn không có font mặc định. Mình không biết bạn Thaistrezz đã sửa cho bạn rồi, nhưng thôi lỡ rồi mình cứ post lên nếu bạn thấy cái nào chạy êm không báo lỗi thì cứ xài nhé, còn nếu có lỗi thì cứ thông báo cho anh em diễn đàn biết để vá lỗi nhé.
link đây: http://www.cadviet.c...files/2/tdc.rar
  • 0

#2664 gia_bach

gia_bach

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1435 Bài viết
Điểm đánh giá: 1426 (rất tốt)

Đã gửi 25 August 2009 - 10:56 AM

@Gia_bach, lisp thứ 1 cũng có cách để lisp chạy trên đường kín đó bạn.
Lisp thứ 2, nếu là đường Line, hoặc Pline có ll và ur trùng với điểm đầu và cuối của Pline thì đúng. Còn nếu Pline có nhiều điểm "lồi" cao hơn UR hay điểm "lõm" thấp hơn LL, thì lisp hiểu sai ngay.

Hi thiep
1. lisp thứ 1 cũng có cách để lisp chạy trên đường kín đó bạn.
-> Lisp này chỉ chạy trên đối tuợng hở không có nghĩa là không có (hay không thể viết) Lisp chạy trên đối tuợng kín.
2 . Lisp thứ 2, .... thì lisp hiểu sai ngay.
-> Hàm vla-getBoundingBox trả vể 2 điểm của hình chử nhật bao quanh đối tuợng (không cần biết có bao nhiêu điểm "lồi" hay điểm "lõm")
Như vậy kết quả không phụ thuộc vào điểm "lồi" hay điểm "lõm".
Bạn vui lòng Check lại.
  • 0

#2665 tomboy

tomboy

    biết vẽ polygon

  • Members
  • PipPip
  • 72 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 25 August 2009 - 10:56 AM

Sao vẫn chưa được bạn ơi, diện tích tính ra không đúng, như thế này, bạn xem lại giúp mình. Mình so sánh 2 kết quả như sau:
1. Khu đất 100m2 vẽ với tỷ lệ 1/1 thì ra diện tích là 1.000m2 (tăng 10 lần)
2. Cũng với khu đất trên vẽ với tỷ lệ 1/10 thì ra diện tích 1m2 (giảm 100 lần)
Mình đã làm đúng theo hơớng dẫn của bạn rồi. Có thể sửa lại giúp mình, cảm ơn bạn nhiều

Bạn Hoàng Sơn 614 thân mến, mình test lại rồi, chạy êm mà. Bạn chú ý nhé:
nếu ví dụ bạn có 1 cái ao hình chữ nhật với mỗi chiều là 1m và 2m
khi bạn vẽ lên máy với đơn vị là: m thì các cạch tương ứng trong autocad sẽ là: 1 và 2 tỉ lệ 1/n trong chương trình sẽ là: 1
----------------------------------- :Dm --------------------------------------------- -- : 10 và 20 ------------------------------------ : 10
----------------------------------- :cm ------------------------------------------------ : 100 và 200 ------------------------------------- : 100
------------------------------------ :mm ------------------------------------------------ : 1000 và 2000 ------------------------------------- : 1000
hoặc bạn có thể xác định tỉ lệ bản vẽ của bạn bằng cách đo khoảng cách cạnh AB trên Autocad và chia cho khoảng cách thực ở ngoài thực địa nhé
ví dụ bạn đo chiều dài cái nhà là 4.50 tương ứng ở thực địa là 9m như vậy tỉ lệ bản vẽ sẽ là 4.5 / 9 = 0.5.
Bạn lấy thương số đó lắp vào tỉ lệ 1/n của chương trình tính diện tích nhé.
note: xoá hết cái lisp cũ nhé rồi down lại cái bản vá lỗi về nhé.
nhớ làm theo hướng dẫn trong file "huong dan.doc" nhé...
  • 0

#2666 tomboy

tomboy

    biết vẽ polygon

  • Members
  • PipPip
  • 72 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 25 August 2009 - 11:16 AM

Ý bạn là : Vẽ Line từ điểm chèn của Text 1 đến điểm chèn của Text 2 ?
Bạn cho hỏi : Cad có lệnh LINE để nối 2 text lại với nhau ?
Phiên bản CAD bao nhiêu vậy bạn ?

phiên bản nào cũng có, chỉ cần mặc định chế độ truy bắt điểm thường trú là Node thôi
  • 0

#2667 tomboy

tomboy

    biết vẽ polygon

  • Members
  • PipPip
  • 72 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 25 August 2009 - 11:31 AM

Mình đã thử lại rồi và dùng rất ngon lành, không hiểu sao lần trước load cùng các lisp khác thì không được, nhưng load riêng mỗi cái lisp đấy thì lại dùng ok. Thank cậu nhiều nhé!

bạn test kỹ lại đi, nếu đúng như bạn nói thì các lisp kia làm hỏng lisp của mình đấy, không những hỏng lisp của mình mà có thể còn làm hỏng các lisp khác nữa... bạn có thể post các lisp kia lên để mình vá lỗi luôn cho nhé.
  • 0

#2668 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 25 August 2009 - 11:35 AM

Hi thiep
1. lisp thứ 1 cũng có cách để lisp chạy trên đường kín đó bạn.
-> Lisp này chỉ chạy trên đối tuợng hở không có nghĩa là không có (hay không thể viết) Lisp chạy trên đối tuợng kín.
2 . Lisp thứ 2, .... thì lisp hiểu sai ngay.
-> Hàm vla-getBoundingBox trả vể 2 điểm của hình chử nhật bao quanh đối tuợng (không cần biết có bao nhiêu điểm "lồi" hay điểm "lõm")
Như vậy kết quả không phụ thuộc vào điểm "lồi" hay điểm "lõm".
Bạn vui lòng Check lại.

Hi, gia_bach
1. Sao bạn không viết luôn cho trường hợp khi Curve là đối tuợng kín luôn.
2. Theo đề bài yêu cầu chỉ tìm Xmax, Ymax, Xmin, Xmin, của đối tượng thì lisp của bạn rất đúng. Còn nếu tìm các điểm trên curve có Xmax, hay Ymax, hay Xmin, hay Xmin, thì lisp của bạn chưa đúng. Sorry! Sorry!
  • 0

#2669 nataca

nataca

    biết lệnh adcenter

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

Đã gửi 25 August 2009 - 11:45 AM

2. Theo đề bài yêu cầu chỉ tìm Xmax, Ymax, Xmin, Xmin, của đối tượng thì lisp của bạn rất đúng. Còn nếu tìm các điểm trên curve có Xmax, hay Ymax, hay Xmin, hay Xmin, thì lisp của bạn chưa đúng. Sorry! Sorry!

Theo mình thì vẫn đúng. Bất kể đối tượng đó là Curve hay là gì đi nữa.
  • 0

#2670 tivanteo

tivanteo

    biết vẽ circle

  • Members
  • PipPip
  • 36 Bài viết
Điểm đánh giá: 17 (tàm tạm)

Đã gửi 25 August 2009 - 12:21 PM

cám ơn Thiệp đã giúp .Mình apload thử thì nó báo lỗi này "Chon doi tuong :; error: no function definition: VLAX-CURVE-ISCLOSED"
không biết lỗi gì nhờ Thiệp kiểm tra giúp. có thêm 1 yêu cầu nhờ Thiệp giúp được không là vẽ 1 đường cong đi qua tập hợp các điểm đã xác định được
  • 0

#2671 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 25 August 2009 - 12:46 PM

cám ơn Thiệp đã giúp .Mình apload thử thì nó báo lỗi này "Chon doi tuong :; error: no function definition: VLAX-CURVE-ISCLOSED"
không biết lỗi gì nhờ Thiệp kiểm tra giúp. có thêm 1 yêu cầu nhờ Thiệp giúp được không là vẽ 1 đường cong đi qua tập hợp các điểm đã xác định được

Lỗi này chắc có lẽ bạn chạy trên nền cad 2004 trở xuống, Bạn thêm dòng (vl-load-com) ở cuối lisp xem sao?

Theo mình thì vẫn đúng. Bất kể đối tượng đó là Curve hay là gì đi nữa.

Nếu curve là CIRCLE thì các điểm Xmax, hay Ymax, hay Xmin, hay Ymin của nó là 4 điểm quadrant chứ không phải là 2 điểm LL và UR đâu NATACA ạ
  • 0

#2672 Thaistreetz

Thaistreetz

    biết lệnh adcenter

  • Advance Member
  • PipPipPipPipPipPipPip
  • 903 Bài viết
Điểm đánh giá: 505 (tốt)

Đã gửi 25 August 2009 - 01:05 PM

mình sửa lại cho bạn rồi nè, mình thêm cả phần lựa chọn text style cho bạn đấy để bạn đỡ phụ thuộc khi máy của bạn không có font mặc định. Mình không biết bạn Thaistrezz đã sửa cho bạn rồi, nhưng thôi lỡ rồi mình cứ post lên nếu bạn thấy cái nào chạy êm không báo lỗi thì cứ xài nhé, còn nếu có lỗi thì cứ thông báo cho anh em diễn đàn biết để vá lỗi nhé.
link đây: http://www.cadviet.c...files/2/tdc.rar

Bản sửa lỗi của Tomboy hay hơn của mình nhiều. nhưng mình góp ý chút để bản sửa của bạn hoàn thiện hơn để chạy tốt trong mọi điều kiện. lisp này chỉ vẽ tốt khi tắt bỏ chế độ bắt điểm. (nói chung tất cả các lisp có vẽ tự động cái gì đó ra màn hình đều cần phải bỏ chế độ bắt điểm mới chạy chính xác trên các bản cad đời cao đc. vì các bản cad này được thiết kế với chế độ bắt điểm thông minh so với chế độ bắt điểm bình thường của cad cũ).
Lisp bắt đầu tự động vẽ sau khi load dữ liệu từ file *.prn. sau bước load file này bạn set giá trị biến OSMODE bằng 0, và trả về giá trị ban đầu khi lisp kết thúc vẽ.
  • 0

Hình đã gửi
IN HIM, I TRUST. THE TRUST IN MY GOD


#2673 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 25 August 2009 - 01:43 PM

Hoan có chắc là quét luôn đường trồng cỏ của Hoan thì lisp bị lỗi không? Lisp này chỉ xử lý 1 đường tự nhiên là LWPOLYLINE và 2 hai đường giới hạn là LINE cắt qua đường tự nhiên. còn 2 line là đường trồng cỏ không cắt qua đường tự nhiên thì không sao.
Còn Hoan muốn lisp chọn hết 1 lúc các loại đường trên một lúc thì cũng sẽ có lisp, nhưng Thiep e rằng nếu số lượng mặt cắt quá lớn, hàng trăm, ngàn cái, thì lisp sẽ chậm và nếu có 1 mặt cắt nào đó không phù hợp với yêu cầu của Lisp (như Thiep đã từng phân tich có 5 trường hợp xảy ra) thì lisp sẽ báo lỗi ngay.

Chào thiệp!
File mình test bị lỗi nè: http://www.cadviet.c...es/2/tnct_4.dwg
không biết mình dùng cad 2007 có ảnh hưởng gì không nữa.
Nếu đúg như thiệp nói thì cái này OK rồi, còn cái mà quét một lần tấc cả các mặt cắt thì bao giờ rãnh thì thiep làm cũng được, còn việc chọn nhiều mặt cắt bị lỗi thì không sao, mình có thể giới hạn tối đa 100, 50 thậm chí 10 mặt cắt một lần cũng được mà. Cảm ơn thiep nhiều!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2674 tomboy

tomboy

    biết vẽ polygon

  • Members
  • PipPip
  • 72 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 25 August 2009 - 01:56 PM

Bản sửa lỗi của Tomboy hay hơn của mình nhiều. nhưng mình góp ý chút để bản sửa của bạn hoàn thiện hơn để chạy tốt trong mọi điều kiện. lisp này chỉ vẽ tốt khi tắt bỏ chế độ bắt điểm. (nói chung tất cả các lisp có vẽ tự động cái gì đó ra màn hình đều cần phải bỏ chế độ bắt điểm mới chạy chính xác trên các bản cad đời cao đc. vì các bản cad này được thiết kế với chế độ bắt điểm thông minh so với chế độ bắt điểm bình thường của cad cũ).
Lisp bắt đầu tự động vẽ sau khi load dữ liệu từ file *.prn. sau bước load file này bạn set giá trị biến OSMODE bằng 0, và trả về giá trị ban đầu khi lisp kết thúc vẽ.

thanhks, bạn nói đúng, tại vì mình chỉ tập trung tìm lỗi của chương trình đó là lỗi thiếu font trong autocad và lỗi vòng lặp khi đọc dữ liệu từ tệp ra thôi nên mình không để ý tới vấn đề đó. mình sẽ rút kinh nghiệm để những bản vá sau được hoàn thiện hơn.
  • 0

#2675 thiep

thiep

    biết dimbaseline

  • Members
  • PipPipPipPipPip
  • 369 Bài viết
Điểm đánh giá: 260 (khá)

Đã gửi 25 August 2009 - 03:35 PM

Chào thiệp!
File mình test bị lỗi nè: http://www.cadviet.c...es/2/tnct_4.dwg
không biết mình dùng cad 2007 có ảnh hưởng gì không nữa.
Nếu đúg như thiệp nói thì cái này OK rồi, còn cái mà quét một lần tấc cả các mặt cắt thì bao giờ rãnh thì thiep làm cũng được, còn việc chọn nhiều mặt cắt bị lỗi thì không sao, mình có thể giới hạn tối đa 100, 50 thậm chí 10 mặt cắt một lần cũng được mà. Cảm ơn thiep nhiều!

Chào Hoan, thiep kiểm tra nhiều lần mà có lỗi gì đâu? khi chọn đối tượng, Hoan nhớ chọn theo kiểu cửa sổ từ phải qua trái, có 5 đối tượng được chọn, gồm 1 pline tự nhiên, 4 line giới hạn. Trong 4 line giới hạn màu vàng, có 2 line cắt qua pline. Điểm cắt này là điểm bắt đầu vẽ đường nạo vét. Sau khi chọn xong nhấn enter, nếu lần đầu khi chạy lisp, lisp sẽ hỏi các thông số. Tiếp tục chọn các mặt cắt khác, khi chọn xong, enter, chọn, enter.... cho đến khi hết mặt cắt, mỏi tay thì ẻnter kết thúc. Còn lisp chọn 1 lần các mặt cắt 1 lúc, Thiep đã viết xong đang test. Hãy đợi đấy nhé.
  • 1

#2676 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 25 August 2009 - 03:48 PM

Các bạn có thể viết dùm mình lisp convert text và Mtext từ mã VNI windows sang unicodevà ngược lại ko vậy?cảm ơn bạn rất nhiều!
  • 0

#2677 moihoclisp

moihoclisp

    biết zoom

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

Đã gửi 25 August 2009 - 04:50 PM

Cám ơn bác Gia bach đã giúp đỡ. em xin đưa ra nội dung dự án của em để mọi người góp ý.
Em lập trình VB6.0 để tạo 1 Form có tác dụng insert các text trong textbox mình nhập vào và insert 1 bản vẽ có sẵn vào CAD theo vị trí định sẵn. Tuy nhiên để insert 1 bản vẽ vào CAD theo vị trí mình muốn thì phải đặt lại biến INSBASE cho bản vẽ đó. Do đó em muốn viết 1 LISP khi chạy sẽ tự động Select toàn bộ đối tượng trên bản vẽ (có thể dùng Command: _AI_SELALL) rồi tự động tính ra Xmax, Ymax, Xmin, Ymin từ đó tính toạ độ trung bình của 2 điểm Max, Min trên rồi gán toạ độ đó cho biến INSBASE của bản vẽ. Khi insert sẽ dùng BASEPOINT của bản vẽ này để đặt đúng vị trí mình muốn (bởi vì mặc định biến INSBASE của bản vẽ là (0.000,0.000,0.000)).
Có thể em viết hơi trừu tượng nhưng mong các bác giúp em cái LISP này. Em xin cảm ơn nhiều
  • 0

#2678 nguyenkhoadung98

nguyenkhoadung98

    biết vẽ pline

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

Đã gửi 25 August 2009 - 04:54 PM

Hình như bạn cũng biết về lisp mà, bạn dung vòng lặp while cho các lần pick là được
(setq p1 (getpoint) tong_chieu_dai 0)

(while (setq p2 (getpoint "\nDiem tiep theo:" p1))
(setq tong_chieu_dai (+ tong_chieu_dai (distance p1 p2))
p1 p2)
)


cảm ơn cuongtk2 nhiều,nhưng mà thú thật là tớ ko bit viết lisp :s_big: nhờ mọi người hoàn chỉnh dùng mình nhé.cảm ơn mọi người
  • 0

#2679 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

  • Moderator
  • PipPipPipPipPipPipPip
  • 4296 Bài viết
Điểm đánh giá: 3804 (đỉnh cao)

Đã gửi 25 August 2009 - 05:08 PM

cảm ơn cuongtk2 nhiều,nhưng mà thú thật là tớ ko bit viết lisp :s_big: nhờ mọi người hoàn chỉnh dùng mình nhé.cảm ơn mọi người

Không biết Nguyenkhoadung đã đọc bài viết trả lời của Tue_NV cho bạn chưa?
Nó nằm ở đây : Viết Lisp theo yêu cầu - Bài viết số 2597
  • 1

#2680 tomboy

tomboy

    biết vẽ polygon

  • Members
  • PipPip
  • 72 Bài viết
Điểm đánh giá: 20 (tàm tạm)

Đã gửi 25 August 2009 - 05:18 PM

có bác nào viết giúp 1 đoạn lisp xác định 1 điểm trên spline có chiều dài từ điểm gốc đến điểm cần xác định cho trước. thanks

ok, của bạn đây, lisp này do mình viết vội quá nên không kịp test kỹ, bạn chạy thử rồi cho ý kiến nhé
link nè: http://www.cadviet.c...files/2/glt.rar
note: đọc kỹ hướng dẫn trong file HUONG DAN.DOC nhé
Lệnh là: GLT (get lý trình đấy mà)
  • 0