Đế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

#2641 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 24 August 2009 - 10:47 AM

Các anh viết dùm em 1 lisp,em cám ơn trước..^^..
Trên cad em có nhiều text (vd:1,2,3,4,…..a,b,c,d,e….v.v.) em muốn nối các text đó bằng đường line,em có kiếm các lisp có liên quan rùi nhưng ko đúng với ý em…ý em muốn lisp như sau:
+tại dòng command: noitext (em vd)
+nhap cac diem can noi:1,2,3,4,a,d
Enter (thì 1 nối 2, 2 nối 3, 3 nối 4, 4 nối a, a nối d,nhưng d thì ko được nối lại điểm 1)
Enter xong thi trở lại
+nhap cac diem can noi:

bạn sử dụng link này: http://www.cadviet.c...files/2/noi.rar
Lệnh là NOI,
Command: Hay chon cac diem mia can noi, sau cung nhan Enter or [Undo]:...
Bạn chỉ chuột vào điểm mia cần nối, hoặc đánh tên điểm cho nó tự nối. Nếu điểm nó không tìm thấy trong vùng chọn thì nó sẽ yêu cầu bạn chọn vùng chọn mới : Select objects:
Nếu bạn muốn nối 1 điểm với 1 đoạn thẳng thì bạn hãy đè phím Shifp + chuột phải, có 1 menu truy bắt điểm hiện ra để cho bạn chọn lụa, khi chọn lựa xong bạn chỉ chuột vào đoạn thẳng cần nối thì nó sẽ nối, nếu bạn bỏ chọn Shift+chuột phải thì nó sẽ tự động chuyển layer sang layer của đối tượng bạn vừa chọn
  • 0

#2642 tomboy

tomboy

    biết vẽ polygon

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

Đã gửi 24 August 2009 - 11:00 AM

Thế này thì có khác gì so với việc bạn vẽ theo cách thông thường nhỉ?
gõ L -> enter -> bắt điểm vào 1 -> bắt điểm vào 2 ->...-> bắt điểm vào d -> ok
chẳng khác tý nào cả

khi bạn nối 2 text lại với nhau bằng lệnh Line thì nó sẽ bị sai, tại vì khi bạn dùng lệnh PROPERTIES để thay đổi góc quay của chữ hoặc thay đổi chiều cao chữ hoặc 1 vài thuộc tính khác của chữ (nhưng không được thay đổi vị trí của chữ), thì sau đó bạn sử dụng lệnh LINE để nối 2 text đó lại với nhau thì đường thẳng vừa nối nó sẽ không trùng với đường thẳng đã nối trước khi text thay đổi. Điều này rất quan trọng tại vì khi bạn vẽ 1 cái ao bằng cách nối các điểm mia đo được lại với nhau bằng lệnh LINE thì diện tích cái ao đó sẽ bị sai, và mỗi khi bạn thay đổi tỉ lệ bản vẽ thì các text trong bản vẽ cũng thay đổi theo vì thế mà cái ao vừa vẽ được sẽ không nằm đúng vị trí của các điểm mia đó nữa.
  • 0

#2643 svba1608

svba1608

    Tưởng Thị Tú Khuyên

  • Moderator
  • PipPipPipPipPipPipPip
  • 601 Bài viết
Điểm đánh giá: 620 (tốt)

Đã gửi 24 August 2009 - 12:55 PM

[code](defun C:sst ()
(setvar "cmdecho" 0)
(command "undo" "Begin" "")

Em sử dụng đoạn code này thử xem nhé :

Rất cảm ơn sự giúp đỡ của anh Thaistreetz và anh Tue_NV. Sau khi sử dụng cả 2 lisp em có nhận xét như sau:
+ Lisp sst của anh Thaistreetz: đơn giản, dễ sử dụng hơn. Nhưng anh để chữ có dấu nên dễ bị lỗi font. Có một nhược điểm nhỏ là chỉ có thể tăng giảm giá trị với số gia là số nguyên, còn với giá trị số thập phân thì không sử dụng được. Nhưng có một ưu điểm tuyệt vời là: có khả năng “nhớ” (lưu giữ) giá trị cuối cùng lần trước.
+ Lisp dstt của anh Tue_NV: Lisp này thực sự thể hiện đẳng cấp của một người viết lisp chuyên nghiệp. Lisp của anh cụ thể, rõ rang, lường mọi tình huống xảy ra, hơn cả yêu cầu của em. Nếu tích hợp được them khả năng “nhớ” số như ở lisp sst của anh Thaistreetz thì càng tuyệt vời hơn.
Chân thành cảm ơn các anh!
  • 0
http://khuyen.space

#2644 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 24 August 2009 - 01:11 PM

Trên cad em có nhiều text (vd:1,2,3,4,…..a,b,c,d,e….v.v.) em muốn nối các text đó bằng đường line,em có kiếm các lisp có liên quan rùi nhưng ko đúng với ý em…ý em muốn lisp như sau:
+tại dòng command: noitext (em vd)
+nhap cac diem can noi:1,2,3,4,a,d
Enter (thì 1 nối 2, 2 nối 3, 3 nối 4, 4 nối a, a nối d,nhưng d thì ko được nối lại điểm 1)
Enter xong thi trở lại
+nhap cac diem can noi:

Ý bạn là : Vẽ Line từ điểm chèn của Text 1 đến điểm chèn của Text 2 ?

khi bạn nối 2 text lại với nhau bằng lệnh Line thì nó sẽ bị sai,
..........
, thì sau đó bạn sử dụng lệnh LINE để nối 2 text đó lại với nhau
..........

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

#2645 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

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

Rất cảm ơn sự giúp đỡ của anh Thaistreetz và anh Tue_NV. Sau khi sử dụng cả 2 lisp em có nhận xét như sau:
+ Lisp sst của anh Thaistreetz: đơn giản, dễ sử dụng hơn. Nhưng anh để chữ có dấu nên dễ bị lỗi font. Có một nhược điểm nhỏ là chỉ có thể tăng giảm giá trị với số gia là số nguyên, còn với giá trị số thập phân thì không sử dụng được. Nhưng có một ưu điểm tuyệt vời là: có khả năng “nhớ” (lưu giữ) giá trị cuối cùng lần trước.
+ Lisp dstt của anh Tue_NV: Lisp này thực sự thể hiện đẳng cấp của một người viết lisp chuyên nghiệp. Lisp của anh cụ thể, rõ rang, lường mọi tình huống xảy ra, hơn cả yêu cầu của em. Nếu tích hợp được them khả năng “nhớ” số như ở lisp sst của anh Thaistreetz thì càng tuyệt vời hơn.
Chân thành cảm ơn các anh!


Mình đổi tên lệnh lại nhé, lisp trước mình gõ nhầm tên lệnh stt thành ra là sst nên khi sử dụng dễ gõ nhầm thành stt.
Code đã sửa lại. Nếu không nhập chữ số thập phân khi chương trình hỏi thì chương trình mặc định nó là 0 nhé.
(defun C:stt ()
(setvar "cmdecho" 0)
(command "undo" "begin")
(setq oldim (getvar "Dimzin"))
(setvar "Dimzin" 0)
(if (not i) (setq i 1))
(if (not a) (setq a 1))
(setq i1 (getreal (strcat"\nNhap so bat dau < " (rtos i 2 0) " >: "))
a1 (getreal (strcat"\nSo gia < " (rtos a 2 0) " >: " )))
(if i1 (setq i i1))
(if a1 (setq a a1))
(if (not tp) (setq tp 0))
(setq tp1 (getint "\nSo chu so thap phan: "))
(if tp1 (setq tp tp1))
(while
(setq res (entsel (strcat "\nChon text de ghi STT thu " (rtos i 2 tp) "")))
(setq res (entget (car res)))
(setq res (entmod (subst (cons 1 (rtos i 2 tp)) (assoc 1 res) res))
)
(setq i (+ i a))
);while
(setvar "Dimzin" oldim)
(command "undo" "end")
(setvar "cmdecho" 1)
);end

  • 1

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


#2646 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 24 August 2009 - 02:10 PM

Admin cho hoi post nhầm bài thì muốn xoá đi thì làm như thế nào, cái này mình post sao nó lên hai bài luôn, không biết cách xoá nên nhân tiện edit lại để hỏi luôn. Thank!
  • 0
Học học nữa học mãi.
Đúp học lại!

#2647 conghoan1003

conghoan1003

    biết vẽ point

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

Đã gửi 24 August 2009 - 02:29 PM

Chào a Thiêp!
Thiệp hiểu sai ý của mình rồi, ý tưởng của mình cũng làm công tác nạo vét như cũ thôi, kết quả tạo thành cũng như thế không có gì khác nhưng mà trình tự thực hiện thì nhanh hơn. Nó như thế này:
Mình có rất nhiều mặt cắt ngang chi tiết, trên mỗi mặt cắt mình có 1 đường tự nhiên(polyline) và hai đường giới hạn vét (line), hai đường giới hạn vét cắt đường tự nhiên tại hai điểm ( tạm gọi là điểm A và điểm :bigsmile:. Sau khi chạy lisp, nhập chiều sâu vét, mái dốc bên trái, bên phải (y như cũ), sau đó quét chọn tấc cả các mặt cắt (có cả đường tự nhiên và đường giới hạn vét). ứng với mỗi đường tự nhiên (polyline) và hai đường giới hạn vét thì lisp sẽ cho mình một đường nạo vét. Mình thấy đượn như thế này thì công tác nạo vét sẽ cực kỳ nhanh nhưng lại sợ ngoài khả năng của lisp. Chúc anh em diễn đàn một tuần làm việc vui vẽ!
Mình định up file lên mà up hoai chẳng được, Thiệp xem file cad hôm trứơc của Hoan cũng được, bên trái là phần trước khi chạy lisp, bên phải là phần sau khi chạy lisp.


  • 0
Học học nữa học mãi.
Đúp học lại!

#2648 thiep

thiep

    biết dimbaseline

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

Đã gửi 24 August 2009 - 03:05 PM

À, thiep thấy rồi, đường giới hạn nạo vét là 2 cái "râu cá trê" line màu vàng đặt trong lớp "giới hạn vét" phải không?
Thiep hỏi tiếp: đường nạo vét, Hoan có muốn là nét đứt màu tím không?
đường Cái Mép - Thị Vải hằng năm có bị bồi lắng hay sao mà phải nạo vét hả H?
Thiep mới ở CPC về hơn 10 ngày.
  • 1

#2649 duytrung

duytrung

    biết pan

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

Đã gửi 24 August 2009 - 04:08 PM

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

#2650 thiep

thiep

    biết dimbaseline

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

Đã gửi 24 August 2009 - 05:56 PM

Gửi Hoan, bây giờ thì Ý tưởng của Hoan đã được hoàn thiện bằng lisp sau đây. Khi chọn đối tượng, Hoan phải chọn cả đường địa hình tự nhiên và cả đường giới hạn cùng 1 lúc, cứ tiếp tục cho đến hết mặt cắt, enter kết thúc. :bigsmile:

;;;---------------------------------
;;; LISP vet bun, COPYRIGHT BY THIEP 0918841230
;;; FREE FROM CADVIET.COM-----------
(defun GiaoDT (e1 e2 / ob1 ob2 g L n kq)
(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 n 0)
(repeat (/ (length L) 3)
(setq kq
(append (list (list (nth n L) (nth (+ n 1) L) (nth (+ n 2) L)))
kq
)
)
(setq n (+ n 3))
)
kq
)
(defun LWP (Lpoint *Model* / PntArr)
(setq PntArr (vlax-make-safearray
vlax-vbDouble
(cons 0 (1- (length Lpoint)))
)
)
(vlax-safearray-fill PntArr Lpoint)
(vla-AddLightWeightPolyline *Model* PntArr)
)
;;;-----------------------
(defun SS-enlst (ss / c L)
(setq c -1)
(repeat (sslength ss)
(setq L (cons (ssname ss (setq c (1+ c))) L))
)
(reverse L)
)
;;;----------------------
(defun taoRay (ModelS poR1 poR2)
(vla-Addray
ModelS
(vlax-3d-point poR1)
(vlax-3d-point poR2)
)
)

;-----------------------
(defun TextTaluy (model k po h ang / obj)
(setq obj (vla-AddText
*Model*
(strcat "1:" (rtos k 2 1))
(vlax-3d-point po)
h
)
)
(vla-put-Alignment obj acAlignmentTopCenter)
(vla-put-TextAlignmentPoint obj (vlax-3d-point po))
(vla-put-Rotation obj ang)
(vla-put-layer obj "vetbun")
)
;;;---------------------
(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")
)
(setvar "cmdecho" 0)
(setvar "plinegen" 1)

)
(defun RESTORE ()
(command "Undo" "end")
(setvar "osmode" OLD_OSMODE)
(setvar "AUTOSNAP" OLD_AUTOSNAP)
(setvar "ORTHOMODE" OLD_ORTHOMODE)
(setvar "CECOLOR" OLD_CECOLOR)
(setvar "cmdecho" 1)
)
;;;--------------------------
(defun DXF (code en) (cdr (assoc code (entget en))))
;;; -------------------------------
(defun existLinetype (doc LineTypeName / item loaded)
(vlax-for item (vla-get-linetypes doc)
(if (= (strcase (vla-get-name item)) (strcase LineTypeName))
(setq loaded T)
)
)
)
;;;------loadLinetype
(defun loadLinetype (doc LineTypeName FileName)
(if (and
(not (existLinetype doc LineTypeName))
(vl-catch-all-error-p
(vl-catch-all-apply
'vla-load
(list
(vla-get-Linetypes doc)
LineTypeName
FileName
)
)
)
)
nil
T
)
)
;;;--------------------------
(vl-load-com)

;;;================================MAIN=============================
(DEFUN c:vbu (/ ActDoc *Model* *layer* en ss p1
Pa Pb p1 p11 p2 p21 p3 p4
objD enD objR1 objR2 enR1 enR2 pin1 pin2
pe1 pe2 objL2 objL1 enL1 enL2 lay an1
an2 pTex1 pTex2 i ss Len lop upp
Lint intP enLWP
)
(setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object))
*Model* (vla-get-ModelSpace ActDoc)
*layer* (vla-get-Layers ActDoc)
)
(vla-StartUndoMark ActDoc)
(SAVE_MODE)
(loadLinetype ActDoc "HIDDEN" "acad.lin")
(if (not (tblsearch "layer" "vetbun"))
(progn
(setq lay (vla-add *layer* "vetbun"))
(vla-put-color lay acMagenta)
(vla-put-Linetype lay "HIDDEN")
)
)
(princ "Chon cac curve be mat nao vet: ")
(While
(setq SS (ssget '((0 . "LWPOLYLINE,LINE"))))
(if (null k_Thiep1) (setq k_Thiep1 (getreal "\nChon goc doc nao vet ben PHAI (mau so): ")))
(if (null k_Thiep2) (setq k_Thiep2 (getreal "\nChon goc doc nao vet ben TRAI (mau so): ")))
(if (null d_Thiep) (setq d_Thiep (getreal "\nChieu sau nao vet: ")))
(if (null hei_Thiep) (setq hei_Thiep (getreal "\nChon chieu cao chu: ")))
(setq Len (SS-enlst ss)
i 0
)
(foreach en Len
(if (eq (dxf 0 en) "LWPOLYLINE")
(progn
(redraw en 3)
(setq enLWP en
OBcur (vlax-ename->vla-object enLWP)
)
(vla-getboundingbox OBcur 'minpoint 'maxpoint)
(setq lop (vlax-safearray->list minpoint)
upp (vlax-safearray->list maxpoint)
un (getvar "viewsize")
ofp (list (/ (+ (car upp) (car lop)) 2)
(- (cadr lop) un)
0.0
)
)
)
) ;end if
)
(foreach en Len
(if (not (eq (dxf 0 en) "LWPOLYLINE"))
(progn
(setq intP (car (GiaoDT en enLWP)))
(if intP
(setq Lint (cons intP Lint))
)
)
)
)
(setq Lint
(vl-sort
Lint
'(lambda (e1 e2) (< (car e1) (car e2)))
)
)
(setvar "osmode" 32)
(setq p1 (car Lint)
p2 (cadr Lint)
p11 (list (+ (car p1) k_Thiep1) (- (cadr p1) 1) 0.0)
p21 (list (- (car p2) k_Thiep2) (- (cadr p2) 1) 0.0)
an1 (angle p1 p11)
an2 (angle p2 p21)
)
;;;================
(vl-cmdf ".offset" d_Thiep enLWP ofp "")
(setq enD (entlast))
(setq objR1 (taoRay *Model* p1 p11)
objR2 (taoRay *Model* p2 p21)
)
(setq enR1 (vlax-vla-object->ename objR1)
enR2 (vlax-vla-object->ename objR2)
)
(setq PA (vlax-curve-getStartPoint enD)
PB (vlax-curve-getEndPoint enD)
)
(setq pin1 (car (giaoDT enR1 enD))
p11 (car (giaoDT enR1 enLWP))
pin2 (car (giaoDT enR2 enD))
p22 (car (giaoDT enR2 enLWP))
pinR (car (giaoDT enR1 enR2))
)
(cond ((/= p1 p11)
(setq p1 p11)
)
((/= p2 p22)
(setq p2 p22)
)
)
(setvar "osmode" 0)
(if (< (car pin1) (car pin2))
(Progn
(vla-delete objR1)
(vla-delete objR2)
(if (< (car PA) (car PB))
(progn
(VL-CMDF "_.break" enD pin2 pin2)
(setq ss (ssname (ssget pin2) 0))
(entdel ss)
(setq pe1 (list (+ (car pin1) 0.1) (+ (cadr pin1) 0.1) 0.0)
pe2 (list (+ (car pin1) 0.1) (- (cadr pin1) 0.1) 0.0)
pe3 (list (- (car pin1) 0.1) (+ (cadr pin1) 0.1) 0.0)
pe4 (list (- (car pin1) 0.1) (- (cadr pin1) 0.1) 0.0)
)
(setq enD (ssname (ssget pin1) 0))
(VL-CMDF "_.break" enD pin1 pin1)
(entdel (ssname (ssget "F" (list pe3 pe4)) 0))
(setq enD (ssname (ssget "F" (list pe1 pe2)) 0))
)
(progn
(VL-CMDF "_.break" enD pin1 pin1)
(setq ss (ssname (ssget pin1) 0))
(entdel ss)
(setq pe1 (list (+ (car pin2) 0.1) (+ (cadr pin2) 0.1) 0.0)
pe2 (list (+ (car pin2) 0.1) (- (cadr pin2) 0.1) 0.0)
pe3 (list (- (car pin2) 0.1) (+ (cadr pin2) 0.1) 0.0)
pe4 (list (- (car pin2) 0.1) (- (cadr pin2) 0.1) 0.0)
)
(setq enD (ssname (ssget pin2) 0))
(VL-CMDF "_.break" enD pin2 pin2)
(entdel (ssname (ssget "F" (list pe1 pe2)) 0))
(setq enD (ssname (ssget "F" (list pe3 pe4)) 0))
)
)
;;;end if trong
(setq Lp (list (car p1)
(cadr p1)
(car pin1)
(cadr pin1)
)
objL1 (LWP Lp *Model*)
enL1 (vlax-vla-object->ename objL1)
)
(setq Lp (list (car p2)
(cadr p2)
(car pin2)
(cadr pin2)
)
objL2 (LWP Lp *Model*)
enL2 (vlax-vla-object->ename objL2)
)
(vl-cmdf ".pedit" "m" enL1 end enL2 "" "j" "" "")
(setq lineNV (vlax-ename->vla-object (entlast)))
)
;;;end progn 1
(Progn
(vla-delete objR1)
(vla-delete objR2)
(entdel enD)
(setq Lp (list (car p1)
(cadr p1)
(car pinR)
(cadr pinR)
(car p2)
(cadr p2)
)
)
(setq lineNV (LWP Lp *Model*))
(setq pin1 pinR
pin2 pinR
)
)
;;;end progn 2
)
;;;end if ngoai
(vla-put-layer lineNV "vetbun")
(vla-put-color lineNV acbylayer)
(vla-put-LinetypeScale lineNV 2)
(vla-put-LinetypeGeneration lineNV T)
;;;---tao text----
(setq pTex1 (polar (acet-geom-midpoint p1 pin1)
(- an1 (/ pi 2))
(/ hei_Thiep 2)
)
)
(TextTaluy *Model* k_Thiep1 pTex1 hei_Thiep an1)
(setq pTex2 (polar (acet-geom-midpoint p2 pin2)
(+ an2 (/ pi 2))
(/ hei_Thiep 2)
)
)
(TextTaluy *Model* k_Thiep2 pTex2 hei_Thiep (+ an2 pi))
(setq Lint nil
Len nil)

;(redraw en 4)
)
;;;end while
(vla-ZoomExtents (vlax-get-acad-object))
(RESTORE)
(vla-EndUndoMark ActDoc)
(princ "\nChuc cac ban thanh cong. Thiep")
(princ)
)
;;;-----------------ham dinh thong so k_Thiep, d_Thiep, hei_Thiep
(defun c:khd ()
(setq k_Thiep1 (cond (k_Thiep1)
(5)
)
)
(setq oldk_Thiep1 k_Thiep1)
(setq k_Thiep1 (getreal (strcat "\nChon goc doc nao vet ben PHAI (mau so) <"
(rtos oldk_Thiep1 2 1)
"> : "

)
)
)
(if (null k_Thiep1)
(setq k_Thiep1 oldk_Thiep1)
)
(setq k_Thiep2 (cond (k_Thiep2)
(5)
)
)
(setq oldk_Thiep2 k_Thiep2)
(setq k_Thiep2 (getreal (strcat "\nChon goc doc nao vet ben TRAI (mau so) <"
(rtos oldk_Thiep2 2 1)
"> : "

)
)
)
(if (null k_Thiep2)
(setq k_Thiep2 oldk_Thiep2)
)



(setq d_Thiep (cond (d_Thiep)
(5)
)
)
(setq oldd_Thiep d_Thiep)
(setq d_Thiep (getreal (strcat "\nChieu sau nao vet <"
(rtos oldd_Thiep 2 1)
"> : "

)
)
)
(if (null d_Thiep)
(setq d_Thiep oldd_Thiep)
)
(setq hei_Thiep (cond (hei_Thiep)
(5)
)
)
(setq oldhei_Thiep hei_Thiep)
(setq hei_Thiep (getreal (strcat "\nChon chieu cao chu <"
(rtos oldhei_Thiep 2 1)
"> : "

)
)
)
(if (null hei_Thiep)
(setq hei_Thiep oldhei_Thiep)
)
(prinC "\nBay gio ban co the su dung lisp vbu.lsp")
(princ)
(c:vbu)
)

  • 1

#2651 tivanteo

tivanteo

    biết vẽ circle

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

Đã gửi 24 August 2009 - 06:43 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
  • 0

#2652 moihoclisp

moihoclisp

    biết zoom

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

Đã gửi 24 August 2009 - 07:32 PM

Em có 1 bản vẽ gồm các line và pline, Nhờ các bác viết hộ em cái Lisp khi chạy sẽ tự động tìm tọa độ Xmin, Ymin, Xmax, Ymax của các đối tượng trên bản vẽ rồi gán Point_min = (Xmin,Ymin); Point_max = (Xmax,Ymax).
Thanks!
  • 0

#2653 viennv

viennv

    biết zoom

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

Đã gửi 24 August 2009 - 08:32 PM

mình đã test rồi, ok mà. Bây giờ bạn thử lại lần nữa xem sao, chứ tại vì nếu máy báo unknown cammand tức là bạn chưa load được đấy hoặc là khi load no báo lỗi nên nó không thể thực hiện được lệnh vừa rồi. Chúc bạn thành công nha

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

#2654 HoangSon614

HoangSon614

    biết lệnh properties

  • Members
  • PipPipPipPip
  • 254 Bài viết
Điểm đánh giá: 66 (tàm tạm)

Đã gửi 24 August 2009 - 09:01 PM

Mình sửa lại cho bạn rồi, thông cảm nhé tại mình chưa test kỹ,
link nè: http://www.cadviet.c...les/2/gdt_2.rar (bản vá lỗi mới nhất đó)
Note: nếu bản vẽ tỉ tệ 1/10 thì trong Option của lệnh GDT phần tỉ lệ đo vẽ bạn nhập số 10 vào nhé!

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

#2655 thuyvan0210

thuyvan0210

    biết zoom

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

Đã gửi 24 August 2009 - 10:46 PM

Các bạn ơi mình gặp vấn đề này xin các bạn nghiên cứu giúp nhé!
Mình cần tính diện tích của các mặt surface mà không biết làm thế nào cả.
hay không tính dược phần diện tích ấy!
  • 0

#2656 bonchen

bonchen

    Chưa sử dụng CAD

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

Đã gửi 24 August 2009 - 11:37 PM

Thế này thì có khác gì so với việc bạn vẽ theo cách thông thường nhỉ?
gõ L -> enter -> bắt điểm vào 1 -> bắt điểm vào 2 ->...-> bắt điểm vào d -> ok
chẳng khác tý nào cả

anh Thaistreetz giúp em,tại có nhiều text thì zôm mệt lắm...
  • 0

#2657 Thaistreetz

Thaistreetz

    biết lệnh adcenter

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

Đã gửi 24 August 2009 - 11:58 PM

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

Cuả bạn đây. đã chạy tốt với cad 2007, 2008.
Lisp này vẽ trắc dọc cống khá đẹp. bạn có thể chia sẻ cách tạo ra file số liệu bằng excel không. mình đoán chắc không phải nhập thủ công cho từng cọc chứ.
  • 0

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


#2658 gia_bach

gia_bach

    biết lệnh adcenter

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

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

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

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


Em có 1 bản vẽ gồm các line và pline, Nhờ các bác viết hộ em cái Lisp khi chạy sẽ tự động tìm tọa độ Xmin, Ymin, Xmax, Ymax của các đối tượng trên bản vẽ rồi gán Point_min = (Xmin,Ymin); Point_max = (Xmax,Ymax).
Thanks!

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 !")
)
)

  • 1

#2659 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 - 09:20 AM

À, thiep thấy rồi, đường giới hạn nạo vét là 2 cái "râu cá trê" line màu vàng đặt trong lớp "giới hạn vét" phải không?
Thiep hỏi tiếp: đường nạo vét, Hoan có muốn là nét đứt màu tím không?
đường Cái Mép - Thị Vải hằng năm có bị bồi lắng hay sao mà phải nạo vét hả H?
Thiep mới ở CPC về hơn 10 ngày.

Uh, đúng là hai cái râu đó nhưng mà lại có hai cái râu phía trên làm mình khó quét nè, hay là mình nối nó lại thành một sau đó rồi mới dùng lisp được không hả thiep, mà như thế thì đường giới hạn vét cũng là polyline không biết thiep nghĩ sao!
Còn đường Cái Mép, cái này là vét hữu cơ trên đường chứ không phải nạo vét lòng sông thiep a? Thiep đi CPC sao về nhanh thế? Đi về có còn nguyên vẹn không thế! :bigsmile:
  • 0
Học học nữa học mãi.
Đúp học lại!

#2660 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 - 09:22 AM

Gửi Hoan, bây giờ thì Ý tưởng của Hoan đã được hoàn thiện bằng lisp sau đây. Khi chọn đối tượng, Hoan phải chọn cả đường địa hình tự nhiên và cả đường giới hạn cùng 1 lúc, cứ tiếp tục cho đến hết mặt cắt, enter kết thúc. :bigsmile:


;;;---------------------------------
;;; LISP vet bun, COPYRIGHT BY THIEP 0918841230
;;; FREE FROM CADVIET.COM-----------
(defun GiaoDT (e1 e2 / ob1 ob2 g L n kq)
(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 n 0)
(repeat (/ (length L) 3)
(setq kq
(append (list (list (nth n L) (nth (+ n 1) L) (nth (+ n 2) L)))
kq
)
)
(setq n (+ n 3))
)
kq
)
(defun LWP (Lpoint *Model* / PntArr)
(setq PntArr (vlax-make-safearray
vlax-vbDouble
(cons 0 (1- (length Lpoint)))
)
)
(vlax-safearray-fill PntArr Lpoint)
(vla-AddLightWeightPolyline *Model* PntArr)
)
;;;-----------------------
(defun SS-enlst (ss / c L)
(setq c -1)
(repeat (sslength ss)
(setq L (cons (ssname ss (setq c (1+ c))) L))
)
(reverse L)
)
;;;----------------------
(defun taoRay (ModelS poR1 poR2)
(vla-Addray
ModelS
(vlax-3d-point poR1)
(vlax-3d-point poR2)
)
)

;-----------------------
(defun TextTaluy (model k po h ang / obj)
(setq obj (vla-AddText
*Model*
(strcat "1:" (rtos k 2 1))
(vlax-3d-point po)
h
)
)
(vla-put-Alignment obj acAlignmentTopCenter)
(vla-put-TextAlignmentPoint obj (vlax-3d-point po))
(vla-put-Rotation obj ang)
(vla-put-layer obj "vetbun")
)
;;;---------------------
(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")
)
(setvar "cmdecho" 0)
(setvar "plinegen" 1)

)
(defun RESTORE ()
(command "Undo" "end")
(setvar "osmode" OLD_OSMODE)
(setvar "AUTOSNAP" OLD_AUTOSNAP)
(setvar "ORTHOMODE" OLD_ORTHOMODE)
(setvar "CECOLOR" OLD_CECOLOR)
(setvar "cmdecho" 1)
)
;;;--------------------------
(defun DXF (code en) (cdr (assoc code (entget en))))
;;; -------------------------------
(defun existLinetype (doc LineTypeName / item loaded)
(vlax-for item (vla-get-linetypes doc)
(if (= (strcase (vla-get-name item)) (strcase LineTypeName))
(setq loaded T)
)
)
)
;;;------loadLinetype
(defun loadLinetype (doc LineTypeName FileName)
(if (and
(not (existLinetype doc LineTypeName))
(vl-catch-all-error-p
(vl-catch-all-apply
'vla-load
(list
(vla-get-Linetypes doc)
LineTypeName
FileName
)
)
)
)
nil
T
)
)
;;;--------------------------
(vl-load-com)

;;;================================MAIN=============================
(DEFUN c:vbu (/ ActDoc *Model* *layer* en ss p1
Pa Pb p1 p11 p2 p21 p3 p4
objD enD objR1 objR2 enR1 enR2 pin1 pin2
pe1 pe2 objL2 objL1 enL1 enL2 lay an1
an2 pTex1 pTex2 i ss Len lop upp
Lint intP enLWP
)
(setq ActDoc (vla-get-ActiveDocument (vlax-get-acad-object))
*Model* (vla-get-ModelSpace ActDoc)
*layer* (vla-get-Layers ActDoc)
)
(vla-StartUndoMark ActDoc)
(SAVE_MODE)
(loadLinetype ActDoc "HIDDEN" "acad.lin")
(if (not (tblsearch "layer" "vetbun"))
(progn
(setq lay (vla-add *layer* "vetbun"))
(vla-put-color lay acMagenta)
(vla-put-Linetype lay "HIDDEN")
)
)
(princ "Chon cac curve be mat nao vet: ")
(While
(setq SS (ssget '((0 . "LWPOLYLINE,LINE"))))
(if (null k_Thiep1) (setq k_Thiep1 (getreal "\nChon goc doc nao vet ben PHAI (mau so): ")))
(if (null k_Thiep2) (setq k_Thiep2 (getreal "\nChon goc doc nao vet ben TRAI (mau so): ")))
(if (null d_Thiep) (setq d_Thiep (getreal "\nChieu sau nao vet: ")))
(if (null hei_Thiep) (setq hei_Thiep (getreal "\nChon chieu cao chu: ")))
(setq Len (SS-enlst ss)
i 0
)
(foreach en Len
(if (eq (dxf 0 en) "LWPOLYLINE")
(progn
(redraw en 3)
(setq enLWP en
OBcur (vlax-ename->vla-object enLWP)
)
(vla-getboundingbox OBcur 'minpoint 'maxpoint)
(setq lop (vlax-safearray->list minpoint)
upp (vlax-safearray->list maxpoint)
un (getvar "viewsize")
ofp (list (/ (+ (car upp) (car lop)) 2)
(- (cadr lop) un)
0.0
)
)
)
) ;end if
)
(foreach en Len
(if (not (eq (dxf 0 en) "LWPOLYLINE"))
(progn
(setq intP (car (GiaoDT en enLWP)))
(if intP
(setq Lint (cons intP Lint))
)
)
)
)
(setq Lint
(vl-sort
Lint
'(lambda (e1 e2) (< (car e1) (car e2)))
)
)
(setvar "osmode" 32)
(setq p1 (car Lint)
p2 (cadr Lint)
p11 (list (+ (car p1) k_Thiep1) (- (cadr p1) 1) 0.0)
p21 (list (- (car p2) k_Thiep2) (- (cadr p2) 1) 0.0)
an1 (angle p1 p11)
an2 (angle p2 p21)
)
;;;================
(vl-cmdf ".offset" d_Thiep enLWP ofp "")
(setq enD (entlast))
(setq objR1 (taoRay *Model* p1 p11)
objR2 (taoRay *Model* p2 p21)
)
(setq enR1 (vlax-vla-object->ename objR1)
enR2 (vlax-vla-object->ename objR2)
)
(setq PA (vlax-curve-getStartPoint enD)
PB (vlax-curve-getEndPoint enD)
)
(setq pin1 (car (giaoDT enR1 enD))
p11 (car (giaoDT enR1 enLWP))
pin2 (car (giaoDT enR2 enD))
p22 (car (giaoDT enR2 enLWP))
pinR (car (giaoDT enR1 enR2))
)
(cond ((/= p1 p11)
(setq p1 p11)
)
((/= p2 p22)
(setq p2 p22)
)
)
(setvar "osmode" 0)
(if (< (car pin1) (car pin2))
(Progn
(vla-delete objR1)
(vla-delete objR2)
(if (< (car PA) (car PB))
(progn
(VL-CMDF "_.break" enD pin2 pin2)
(setq ss (ssname (ssget pin2) 0))
(entdel ss)
(setq pe1 (list (+ (car pin1) 0.1) (+ (cadr pin1) 0.1) 0.0)
pe2 (list (+ (car pin1) 0.1) (- (cadr pin1) 0.1) 0.0)
pe3 (list (- (car pin1) 0.1) (+ (cadr pin1) 0.1) 0.0)
pe4 (list (- (car pin1) 0.1) (- (cadr pin1) 0.1) 0.0)
)
(setq enD (ssname (ssget pin1) 0))
(VL-CMDF "_.break" enD pin1 pin1)
(entdel (ssname (ssget "F" (list pe3 pe4)) 0))
(setq enD (ssname (ssget "F" (list pe1 pe2)) 0))
)
(progn
(VL-CMDF "_.break" enD pin1 pin1)
(setq ss (ssname (ssget pin1) 0))
(entdel ss)
(setq pe1 (list (+ (car pin2) 0.1) (+ (cadr pin2) 0.1) 0.0)
pe2 (list (+ (car pin2) 0.1) (- (cadr pin2) 0.1) 0.0)
pe3 (list (- (car pin2) 0.1) (+ (cadr pin2) 0.1) 0.0)
pe4 (list (- (car pin2) 0.1) (- (cadr pin2) 0.1) 0.0)
)
(setq enD (ssname (ssget pin2) 0))
(VL-CMDF "_.break" enD pin2 pin2)
(entdel (ssname (ssget "F" (list pe1 pe2)) 0))
(setq enD (ssname (ssget "F" (list pe3 pe4)) 0))
)
)
;;;end if trong
(setq Lp (list (car p1)
(cadr p1)
(car pin1)
(cadr pin1)
)
objL1 (LWP Lp *Model*)
enL1 (vlax-vla-object->ename objL1)
)
(setq Lp (list (car p2)
(cadr p2)
(car pin2)
(cadr pin2)
)
objL2 (LWP Lp *Model*)
enL2 (vlax-vla-object->ename objL2)
)
(vl-cmdf ".pedit" "m" enL1 end enL2 "" "j" "" "")
(setq lineNV (vlax-ename->vla-object (entlast)))
)
;;;end progn 1
(Progn
(vla-delete objR1)
(vla-delete objR2)
(entdel enD)
(setq Lp (list (car p1)
(cadr p1)
(car pinR)
(cadr pinR)
(car p2)
(cadr p2)
)
)
(setq lineNV (LWP Lp *Model*))
(setq pin1 pinR
pin2 pinR
)
)
;;;end progn 2
)
;;;end if ngoai
(vla-put-layer lineNV "vetbun")
(vla-put-color lineNV acbylayer)
(vla-put-LinetypeScale lineNV 2)
(vla-put-LinetypeGeneration lineNV T)
;;;---tao text----
(setq pTex1 (polar (acet-geom-midpoint p1 pin1)
(- an1 (/ pi 2))
(/ hei_Thiep 2)
)
)
(TextTaluy *Model* k_Thiep1 pTex1 hei_Thiep an1)
(setq pTex2 (polar (acet-geom-midpoint p2 pin2)
(+ an2 (/ pi 2))
(/ hei_Thiep 2)
)
)
(TextTaluy *Model* k_Thiep2 pTex2 hei_Thiep (+ an2 pi))
(setq Lint nil
Len nil)

;(redraw en 4)
)
;;;end while
(vla-ZoomExtents (vlax-get-acad-object))
(RESTORE)
(vla-EndUndoMark ActDoc)
(princ "\nChuc cac ban thanh cong. Thiep")
(princ)
)
;;;-----------------ham dinh thong so k_Thiep, d_Thiep, hei_Thiep
(defun c:khd ()
(setq k_Thiep1 (cond (k_Thiep1)
(5)
)
)
(setq oldk_Thiep1 k_Thiep1)
(setq k_Thiep1 (getreal (strcat "\nChon goc doc nao vet ben PHAI (mau so) <"
(rtos oldk_Thiep1 2 1)
"> : "

)
)
)
(if (null k_Thiep1)
(setq k_Thiep1 oldk_Thiep1)
)
(setq k_Thiep2 (cond (k_Thiep2)
(5)
)
)
(setq oldk_Thiep2 k_Thiep2)
(setq k_Thiep2 (getreal (strcat "\nChon goc doc nao vet ben TRAI (mau so) <"
(rtos oldk_Thiep2 2 1)
"> : "

)
)
)
(if (null k_Thiep2)
(setq k_Thiep2 oldk_Thiep2)
)

(setq d_Thiep (cond (d_Thiep)
(5)
)
)
(setq oldd_Thiep d_Thiep)
(setq d_Thiep (getreal (strcat "\nChieu sau nao vet <"
(rtos oldd_Thiep 2 1)
"> : "

)
)
)
(if (null d_Thiep)
(setq d_Thiep oldd_Thiep)
)
(setq hei_Thiep (cond (hei_Thiep)
(5)
)
)
(setq oldhei_Thiep hei_Thiep)
(setq hei_Thiep (getreal (strcat "\nChon chieu cao chu <"
(rtos oldhei_Thiep 2 1)
"> : "

)
)
)
(if (null hei_Thiep)
(setq hei_Thiep oldhei_Thiep)
)
(prinC "\nBay gio ban co the su dung lisp vbu.lsp")
(princ)
(c:vbu)
)

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
  • 0
Học học nữa học mãi.
Đúp học lại!