Đến nội dung


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

Ứng dụng LISP để vẽ bản vẽ kiến trúc (phần cơ bản)


  • Please log in to reply
124 replies to this topic

#1 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 27 January 2007 - 06:35 PM

Một bản vẽ mới được thiết lập. Vẫn những layer đó, vẫn những kiểu text đó, vẫn những kiểu dim đó...Bạn không cần thiết phải làm lại từ đầu vì quá mất thời gian. Vậy làm thế nào???

( Tất cả các LISP CODE bạn chỉ việc copy rồi save ra file cùng tên với lệnh lisp và có phần mở rộng la .LSP (ví dụ: TaoL.LSP) là ok :lol: )

Bài 1: Tạo Layer

(defun c:TaoL()  (command "layer" "m" "!tuong" "c" "2" "" "")  (command "layer" "m" "!tim" "c" "1" "" "")  (command "layer" "m" "!thay" "c" "7" "" "")  (command "layer" "m" "!noithat" "c" "8" "" "")  (command "layer" "m" "!hatch" "c" "8" "" "")  (command "layer" "m" "!chu" "c" "3" "" "")  (command "layer" "m" "!kichthuoc" "c" "8" "" "")  (princ)  )

Với lisp này lệnh để tạo layer sẽ là TaoL.

Bài 2: Tạo Text Style ( kiểu chữ )

(defun c:TaoC()  (command "style" "!vnAvanH" ".VnAvantH" "" "" "" "" "")  (princ))

Với lisp này lệnh để tạo kiểu chữ sẽ là TaoC.

Bài 3: Tạo Dim Style ( kiểu kích thước )

(defun c:TaoK (/ scl fcal scal );dmasz dexo dexo dtxt dgap dclre dclrt dsn ao ad obj)(vl-load-com)(setq scl (getstring "\nTY LE BAN VE: "))(setq fcal (atof (substr scl 1 1))) (setq scal (atof (substr scl 3 3))) (setq tyle (/ fcal scal))  (setq caochu (getint "\nCHIEU CAO CUA CHU: "))(setvar "DIMALTF" 25)(setvar "DIMALTTZ" 13) (setvar "DIMALTZ" 13) (setvar "DIMBLK" "ArchTick") (setvar "DIMBLK1" "ArchTick")(setvar "DIMBLK2" "ArchTick")(setvar "DIMASZ" (/ caochu 2))(setvar "DIMCEN" -50)  (setvar "DIMCLRD" 9)(setvar "DIMDLE" (/ caochu 2))(setvar "DIMTOFL" 1)(setvar "DIMDLI" 0)(setvar "DIMCLRE" 9)(setvar "DIMEXE" (/ caochu 2))(setvar "DIMEXO" 0)(setvar "DIMTMOVE" 2)(setvar "DIMLDRBLK" "ArchTick")(setvar "DIMDEC" 0)(setvar "DIMCLRT" 9)(setvar "DIMTXT" caochu)(setvar "DIMLFAC" TYLE) (setvar "DIMTIX" 1)(setvar "DIMTIH" 0)(setvar "DIMGAP" (/ caochu 2))(setvar "DIMTOH" 0)(setvar "DIMTAD" 1)(setvar "DIMTXSTY" "!vnAvanH")(setvar "DIMTDEC" 0)(setvar "DIMTZIN" 13)(setvar "DIMZIN" 13);-------------------------------------------------------------(setq dsn (getstring "\nTEN CUA KIEU DIM MOI: ")) (setq ao (vlax-get-acad-object)) (setq ad (vla-get-ActiveDocument ao)) (setq obj (vla-add (vla-get-dimstyles ad) dsn)) (vla-copyfrom Obj ad) (vla-put-activedimstyle ad Obj) (princ) )

Với lisp này lệnh để tạo kiểu kích thước sẽ là TaoK.
Các thông số cần nhập
1. Tỷ lệ bản vẽ: (Thường là 1/1, cũng có thể là 1/2 tùy vào kiểu dim bạn muốn tạo)
2. Chiều cao chữ: (Tùy thuộc vào bản vẽ của bạn)
3. Tên kiểu dim mới: (Nên đặt theo chiều cao của chữ)

  • 20

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#2 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 27 January 2007 - 06:57 PM

Xong phần khởi động. Giờ là bắt đấu vẽ với LINE, với ARC...
- Ồ! những đường Line này sao không phải là PLINE nhỉ? Vừa dễ quản lý vừa nhẹ bản vẽ. Phải làm sao đây? BO lại à ? OH không !!!

Bài 4. Nối LINE và ARC thành PLINE

(defun c:nn (/ tdt ssdt sodt index)(defun ObjName (ssdt /)(cdr (assoc '0 (entget ssdt))))(defun MoPL (ssdt /)(= (cdr (assoc '70 (entget ssdt))) 0))(defun NoiPL (ssdt /)(if (MoPL ssdt)(command ".PEDIT" ssdt "J" "All" "" "X")))(defun NoiLC (ssdt /)(command ".PEDIT" ssdt "Y" "J" "All" "" "X"))(setqtdt (ssget)sodt (sslength tdt)index 0)(repeat sodt(setqssdt (ssname tdt index)index (1+ index))(if (or (= (Objname ssdt) "LWPOLYLINE")(= (Objname ssdt) "POLYLINE"))(NoiPL ssdt))(if (or (= (Objname ssdt) "LINE") (= (Objname ssdt) "ARC"))(NoiLC ssdt)))(princ))

Lệnh để nối LINE và ARC thành PLINE là nn
  • 9

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#3 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 27 January 2007 - 07:10 PM

Nhanh quá! Cái lisp NN kia giúp tôi đỡ được bao nhiêu công khi phải BO line thanh PLINE.

Giờ đến vễ cửa, cửa đi, cửa sổ... nhiều quá. Copy từ thư viện ra thì lại phải SCALE rồi làng nhằng LAYER không đúng với bản vẽ của mình ! Vậy thì co cách nào không nhỉ?

Bài 5: Vẽ cửa đi

;-------------------------------------------------------------------------------------;ve cua di 1 canh;-------------------------------------------------------------------------------------(defun c:c1 (/ p1 p2 p3 p4 p5 daicua x y)(setq osm (getvar "osmode"))  (setq	p1     (getpoint "\nHay vao diem goc cua: ")	p2     (getpoint p1 "\nHay vao diem mut cua: ")	p3     (getpoint p1 "\nHay vao huong cua: ")	daicua (distance p1 p2)	x      (car p1)	y      (car (cdr p1))	x      25	y      daicua	p4     (list x y)	p5     (list daicua 0)  )  (setvar "OSMODE" 0)  (if (l3d_khongthanghang p1 p2 p3)    (progn      (command ".UCS" "3" p1 p2 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)      (command ".UCS" "P")    )    (princ "\n3 diem nhap vao khong duoc thang hang")  )(setvar "osmode" osm)       );-------------------------------------------------------------------------------------;ve cua di 2 canh;-------------------------------------------------------------------------------------(defun c:c2 (/ p1 p2 p3 p4 p5 daicua x y)  (setq osm (getvar "osmode"))    (setq	p1     (getpoint "\nHay vao diem goc cua: ")	p2     (getpoint p1 "\nHay vao diem mut cua: ")	p3     (getpoint p1 "\nHay vao huong cua: ")	daicua (/ (distance p1 p2) 2.0)	x      (car p1)	y      (car (cdr p1))	x      25	y      daicua 	p4     (list x y)	p5     (list daicua 0)  )  (setvar "OSMODE" 0)  (if (l3d_khongthanghang p1 p2 p3)    (progn      (command ".UCS" "3" p1 p2 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)      (command ".UCS" "P")            (command ".UCS" "3" p2 p1 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)      (command ".UCS" "P")          )    (princ "\n3 diem nhap vao khong duoc thang hang")  )  (setvar "osmode" osm)       );-------------------------------------------------------------------------------------;ve cua di 4 canh;-------------------------------------------------------------------------------------(defun c:c4 (/ p1 p2 p3 p4 p5 daicua x y)  (setq osm (getvar "osmode"))      (setq	p1     (getpoint "\nHay vao diem goc cua: ")	p2     (getpoint p1 "\nHay vao diem mut cua: ")	p3     (getpoint p1 "\nHay vao huong cua: ")	daicua (/ (distance p1 p2) 4.0)	x      (car p1)	y      (car (cdr p1))	x      25	y      daicua 	p4     (list x y)	p5     (list daicua 0)  )  (setvar "OSMODE" 0)  (if (l3d_khongthanghang p1 p2 p3)    (progn            (setq diem1 (diemgiua p1 (diemgiua p1 p2)))      (setq diem2 (diemgiua p1 p2))      (setq diem3 (diemgiua p2 (diemgiua p1 p2)))      	      (command ".UCS" "3" p1 p2 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)      (command ".UCS" "P")            (command ".UCS" "3" diem1 p2 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)           (command ".UCS" "P")                  (command ".UCS" "3" p2 p1 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)      (command ".UCS" "P")      (command ".UCS" "3" diem3 p1 p3)      (command ".rectangle" "0,0" p4)      (command ".Arc" p5 "C" "0,0" p4)      (command ".UCS" "P")          )    (princ "\n3 diem nhap vao khong duoc thang hang")  )(setvar "osmode" osm)         );-----------------------------------------------------------------------------

Có 3 lệnh trong lisp này.
c1: vẽ cửa đi 1 cánh
c2: vẽ cửa đi 2 cánh
c4: vẽ cửa đi 4 cánh

Thế còn cửa sổ thì sao nhỉ ?

Bài 6: Vẽ cửa sổ

(defun c:w1(/ data_m l1 l2 p1 p2 check)(defun wd_import(/ p3 p4 p5 p6)    (setq data_m (ssget))    (setq p1 (getpoint "\nfirst point :") p2 (getpoint "\nsecond point :"))    (setq l1 nil l2 nil check 1)    (if (not (= nil data_m)) (progn        (setq l1 (entget (ssname data_m 0)))        (setq l2 (entget (ssname data_m 1)))        (if (or (= nil l1) (not (= "LINE" (cdr (assoc 0 l1))))) (setq check 0))        (if (or (= nil l2) (not (= "LINE" (cdr (assoc 0 l2))))) (setq check 0))        (if (not (= 0 (-(sslength data_m) 2))) (setq check 0))        (if (= 1 check) (progn            (setq p3 (cdr (assoc 10 l1))) (setq p3 (list (nth 0 p3) (nth 1 p3)))            (setq p4 (cdr (assoc 11 l1))) (setq p4 (list (nth 0 p4) (nth 1 p4)))            (setq p5 (cdr (assoc 10 l2))) (setq p5 (list (nth 0 p5) (nth 1 p5)))            (setq p6 (cdr (assoc 11 l2))) (setq p6 (list (nth 0 p6) (nth 1 p6)))            (if (not (= nil (inters p3 p4 p5 p6 nil))) (setq check 0))        ))    ) (setq check 0))    (princ))(defun wd_procced()(defun mkv(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)    (setq p3 (cdr (assoc 10 l1)))     (setq p4 (cdr (assoc 11 l1)))     (setq p5 (cdr (assoc 10 l2)))     (setq p6 (cdr (assoc 11 l2)))     (if (> (abs (- (nth 1 p1) (nth 1 p3)))           (abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))    (if (> (abs (- (nth 1 p1) (nth 1 p4)))           (abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))    (if (> (abs (- (nth 1 p2) (nth 1 p5)))           (abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))    (if (> (abs (- (nth 1 p2) (nth 1 p6)))           (abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))    (if (= 0 check) (princ "\ninvalid data") (progn        (setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p3) (nth 1 p4) )));        (princ ls1)        (setq p7 (list (nth 0 p3) (nth 0 ls1) 0))        (setq p8 (list (nth 0 p3) (nth 1 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p3) (nth 2 ls1) 0))        (setq p8 (list (nth 0 p3) (nth 3 ls1) 0))        (mkline p7 p8 l1)        (setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p5) (nth 1 p6) )));        (princ ls1)        (setq p7 (list (nth 0 p5) (nth 0 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 1 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p5) (nth 2 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 3 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p3) (nth 1 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 1 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p3) (nth 2 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 2 ls1) 0))        (mkline p7 p8 l1)        (setq getom (getvar "osmode"))        (setvar "osmode" 0)        (setq ls2 (arlst (list (nth 0 p3) (nth 0 p5))))        (setq p7 (list (nth 0 ls2) (nth 1 ls1) 0))        (setq p8 (list (nth 1 ls2) (nth 2 ls1) 0))        (setq ll1 (list            (cons 0 "line")            (cons 8 (getvar "clayer"))        ))                (drawrt2 p7 p8 ll1)        (setvar "osmode" getom)        (command "erase" data_m "")    ))    (princ))(defun mkh(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)    (setq p3 (cdr (assoc 10 l1)))     (setq p4 (cdr (assoc 11 l1)))     (setq p5 (cdr (assoc 10 l2)))     (setq p6 (cdr (assoc 11 l2)))     (if (> (abs (- (nth 0 p1) (nth 0 p3)))           (abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))    (if (> (abs (- (nth 0 p1) (nth 0 p4)))           (abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))    (if (> (abs (- (nth 0 p2) (nth 0 p5)))           (abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))    (if (> (abs (- (nth 0 p2) (nth 0 p6)))           (abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))    (if (= 0 check) (princ "\ninvalid data") (progn                (setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p3) (nth 0 p4) )));        (princ ls1)        (setq p7 (list (nth 0 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 1 ls1) (nth 1 p3) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 2 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 3 ls1) (nth 1 p3) 0))        (mkline p7 p8 l1)        (setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p5) (nth 0 p6) )));        (princ ls1)        (setq p7 (list (nth 0 ls1) (nth 1 p5) 0))        (setq p8 (list (nth 1 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 2 ls1) (nth 1 p5) 0))        (setq p8 (list (nth 3 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 1 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 1 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 2 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 2 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq getom (getvar "osmode"))        (setvar "osmode" 0)        (setq ls2 (arlst (list (nth 1 p3) (nth 1 p5))))        (setq p7 (list (nth 1 ls1) (nth 0 ls2) 0))        (setq p8 (list (nth 2 ls1) (nth 1 ls2) 0))        (setq ll1 (list            (cons 0 "line")            (cons 8 (getvar "clayer"))        ))        (drawrt3 p7 p8 ll1)        (setvar "osmode" getom)        (command "erase" data_m "")    ))    (princ))    (setvar "cmdecho" 0) (command "undo" "mark") (setvar "cmdecho" 1)    (if (= 0 check) (princ "\ninvalid data") (progn        (if (< (abs (- (nth 0 (cdr (assoc 10 l1)))                       (nth 0 (cdr (assoc 11 l1))) )) 0.00001) (mkv))        (if (< (abs (- (nth 1 (cdr (assoc 10 l1)))                       (nth 1 (cdr (assoc 11 l1))) )) 0.00001) (mkh))            ))        (princ)    )    (wd_import)  	(ai_undo_push)    (wd_procced)  	(ai_undo_pop)	)(defun c:w2(/ data_m l1 l2 p1 p2 check)(defun wd_import(/ p3 p4 p5 p6)    (setq data_m (ssget))    (setq p1 (getpoint "\nfirst point :") p2 (getpoint "\nsecond point :"))    (setq l1 nil l2 nil check 1)    (if (not (= nil data_m)) (progn        (setq l1 (entget (ssname data_m 0)))        (setq l2 (entget (ssname data_m 1)))        (if (or (= nil l1) (not (= "LINE" (cdr (assoc 0 l1))))) (setq check 0))        (if (or (= nil l2) (not (= "LINE" (cdr (assoc 0 l2))))) (setq check 0))        (if (not (= 0 (-(sslength data_m) 2))) (setq check 0))        (if (= 1 check) (progn            (setq p3 (cdr (assoc 10 l1))) (setq p3 (list (nth 0 p3) (nth 1 p3)))            (setq p4 (cdr (assoc 11 l1))) (setq p4 (list (nth 0 p4) (nth 1 p4)))            (setq p5 (cdr (assoc 10 l2))) (setq p5 (list (nth 0 p5) (nth 1 p5)))            (setq p6 (cdr (assoc 11 l2))) (setq p6 (list (nth 0 p6) (nth 1 p6)))            (if (not (= nil (inters p3 p4 p5 p6 nil))) (setq check 0))        ))    ) (setq check 0))    (princ))(defun wd_procced()(defun mkv(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)    (setq p3 (cdr (assoc 10 l1)))     (setq p4 (cdr (assoc 11 l1)))     (setq p5 (cdr (assoc 10 l2)))     (setq p6 (cdr (assoc 11 l2)))     (if (> (abs (- (nth 1 p1) (nth 1 p3)))           (abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))    (if (> (abs (- (nth 1 p1) (nth 1 p4)))           (abs (- (nth 1 p3) (nth 1 p4))) ) (setq check 0))    (if (> (abs (- (nth 1 p2) (nth 1 p5)))           (abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))    (if (> (abs (- (nth 1 p2) (nth 1 p6)))           (abs (- (nth 1 p5) (nth 1 p6))) ) (setq check 0))    (if (= 0 check) (princ "\ninvalid data") (progn        (setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p3) (nth 1 p4) )));        (princ ls1)        (setq p7 (list (nth 0 p3) (nth 0 ls1) 0))        (setq p8 (list (nth 0 p3) (nth 1 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p3) (nth 2 ls1) 0))        (setq p8 (list (nth 0 p3) (nth 3 ls1) 0))        (mkline p7 p8 l1)        (setq ls1 (arlst (list (nth 1 p1) (nth 1 p2) (nth 1 p5) (nth 1 p6) )));        (princ ls1)        (setq p7 (list (nth 0 p5) (nth 0 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 1 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p5) (nth 2 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 3 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p3) (nth 1 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 1 ls1) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 0 p3) (nth 2 ls1) 0))        (setq p8 (list (nth 0 p5) (nth 2 ls1) 0))        (mkline p7 p8 l1)        (setq ls2 (arlst (list (nth 0 p3) (nth 0 p5))))                (setq ll1 (list            (cons 0 "line")            (cons 8 (getvar "clayer"))        ))				(if (< (nth 0 p1) (nth 0 ls2)) (progn        	(setq p7 (list (nth 0 ls2) (nth 1 ls1) 0))			(setq p8 (list (nth 1 ls2) (nth 2 ls1) 0))			(setq p7 (list (* (+ (nth 0 p7) (nth 0 p8)) 0.5) (nth 1 p7) 0))        	(drawrt2 p7 p8 ll1)			(setq p7 (list (- (nth 0 ls2) 70) (- (nth 1 ls1) 100) 0))			(setq p8 (list (- (nth 0 ls2) 70) (+ (nth 2 ls1) 100) 0))			(mkline p7 p8 ll1)			(setq p9 (list (+ (nth 0 p7) 70) (nth 1 p7) 0))			(mkline p7 p9 ll1)			(setq p9 (list (+ (nth 0 p8) 70) (nth 1 p8) 0))			(mkline p8 p9 ll1)	    )(progn		   	(setq p7 (list (nth 0 ls2) (nth 1 ls1) 0))			(setq p8 (list (nth 1 ls2) (nth 2 ls1) 0))			(setq p8 (list (* (+ (nth 0 p7) (nth 0 p8)) 0.5) (nth 1 p8) 0))        	(drawrt2 p7 p8 ll1)			(setq p7 (list (+ (nth 1 ls2) 70) (- (nth 1 ls1) 100) 0))			(setq p8 (list (+ (nth 1 ls2) 70) (+ (nth 2 ls1) 100) 0))			(mkline p7 p8 ll1)			(setq p9 (list (- (nth 0 p7) 70) (nth 1 p7) 0))			(mkline p7 p9 ll1)			(setq p9 (list (- (nth 0 p8) 70) (nth 1 p8) 0))			(mkline p8 p9 ll1)		))                (command "erase" data_m "")    ))    (princ))(defun mkh(/ p3 p4 p5 p6 p7 p8 p9 ls1 ls2 getom ll1)    (setq p3 (cdr (assoc 10 l1)))     (setq p4 (cdr (assoc 11 l1)))     (setq p5 (cdr (assoc 10 l2)))     (setq p6 (cdr (assoc 11 l2)))     (if (> (abs (- (nth 0 p1) (nth 0 p3)))           (abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))    (if (> (abs (- (nth 0 p1) (nth 0 p4)))           (abs (- (nth 0 p3) (nth 0 p4))) ) (setq check 0))    (if (> (abs (- (nth 0 p2) (nth 0 p5)))           (abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))    (if (> (abs (- (nth 0 p2) (nth 0 p6)))           (abs (- (nth 0 p5) (nth 0 p6))) ) (setq check 0))    (if (= 0 check) (princ "\ninvalid data") (progn                (setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p3) (nth 0 p4) )));        (princ ls1)        (setq p7 (list (nth 0 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 1 ls1) (nth 1 p3) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 2 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 3 ls1) (nth 1 p3) 0))        (mkline p7 p8 l1)        (setq ls1 (arlst (list (nth 0 p1) (nth 0 p2) (nth 0 p5) (nth 0 p6) )));        (princ ls1)        (setq p7 (list (nth 0 ls1) (nth 1 p5) 0))        (setq p8 (list (nth 1 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 2 ls1) (nth 1 p5) 0))        (setq p8 (list (nth 3 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 1 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 1 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)        (setq p7 (list (nth 2 ls1) (nth 1 p3) 0))        (setq p8 (list (nth 2 ls1) (nth 1 p5) 0))        (mkline p7 p8 l1)		(setq getom (getvar "osmode"))        (setvar "osmode" 0)				(setq ll1 (list	            (cons 0 "line")	            (cons 8 (getvar "clayer"))	        ))		(setq ls2 (arlst (list (nth 1 p3) (nth 1 p5))))		;(princ ls2)				(if (> (nth 1 p1) (nth 1 ls2)) (progn        	(setq p7 (list (nth 1 ls1) (nth 0 ls2) 0))        	(setq p8 (list (nth 2 ls1) (nth 1 ls2) 0))			(setq p8 (list (nth 2 ls1) (* (+ (nth 1 p7) (nth 1 p8)) 0.5) 0))		        	(drawrt3 p7 p8 ll1)			(setq p7 (list (- (nth 1 ls1) 100) (+ (nth 1 ls2) 70) 0))			(setq p8 (list (+ (nth 2 ls1) 100) (+ (nth 1 ls2) 70) 0))			(mkline p7 p8 ll1)			(setq p9 (list (nth 0 p7) (- (nth 1 p7) 70) 0))			(mkline p7 p9 ll1)			(setq p9 (list (nth 0 p8) (- (nth 1 p8) 70) 0))			(mkline p8 p9 ll1)		)(progn		  	(setq p7 (list (nth 1 ls1) (nth 0 ls2) 0))        	(setq p8 (list (nth 2 ls1) (nth 1 ls2) 0))			(setq p7 (list (nth 1 ls1) (* (+ (nth 1 p7) (nth 1 p8)) 0.5) 0))						(drawrt3 p7 p8 ll1)						(setq p7 (list (- (nth 1 ls1) 100) (- (nth 0 ls2) 70) 0))			(setq p8 (list (+ (nth 2 ls1) 100) (- (nth 0 ls2) 70) 0))			(mkline p7 p8 ll1)			(setq p9 (list (nth 0 p7) (+ (nth 1 p7) 70) 0))			(mkline p7 p9 ll1)			(setq p9 (list (nth 0 p8) (+ (nth 1 p8) 70) 0))			(mkline p8 p9 ll1)								))				(setvar "osmode" getom)	        (command "erase" data_m "")    ))    (princ))    (setvar "cmdecho" 0) (command "undo" "mark") (setvar "cmdecho" 1)    (if (= 0 check) (princ "\ninvalid data") (progn        (if (< (abs (- (nth 0 (cdr (assoc 10 l1)))                       (nth 0 (cdr (assoc 11 l1))) )) 0.00001) (mkv))        (if (< (abs (- (nth 1 (cdr (assoc 10 l1)))                       (nth 1 (cdr (assoc 11 l1))) )) 0.00001) (mkh))            ))        (princ)    )    (wd_import)    (wd_procced))

Có 2 lệnh trong lisp này.
w1: vẽ cửa sổ kiểu 1
w2: vẽ cửa sổ kiểu 2
  • 9

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#4 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 27 January 2007 - 07:16 PM

Ờ nhỉ tí quến. Thế khi vẽ tim và tường thì làm thế nào cho nhanh. Co người thì dùng MLine, co người thì dùng Line. MLine thì không bàn, nhanh, nhưng không phải ai cũng quen. Vậy làm thế nào khi đã ve xong tim tường rồi? OFFSET ?

Bài 7: Offset line sang 2 bên

(defun c:oo(/ data_m)(defun import_data(/ i)    (setq data_m (ssget))    (if (= nil distan_m) (setq distan_m 110.0))    (princ "Distance (")    (princ distan_m)    (princ "):")    (setq i (getreal ))    (if (not (= nil i)) (setq distan_m i)))(defun process(/ ent check)(defun p_check()    (setq check 0)    (if (= "LINE" (cdr (assoc 0 ent))) (setq check 1))    (princ))(defun p_d_offset(/ p1 p2 p3 p4)(defun makeline(/ e2 e5);    (princ ent);    (setq e5 nil);    (setq e5 (cdr (assoc 5 ent)));    (princ e5);    (if (= nil e5) (setq e5 ))    (setq la (list (cons 0 "LINE")        (cons 5 (cdr (assoc 5 ent)) )        (cons 8 (cdr (assoc 8 ent)) )        (cons 10 p3)        (cons 11 p4)    ));    (princ la)    (entmake la)    (princ))    (setq p1 (cdr (assoc 10 ent)) p2 (cdr (assoc 11 ent)) )    (if (not (= p1 p2)) (progn        (if (< (abs (- (nth 0 p1) (nth 0 p2))) 0.000001) (progn            (setq p3 (list (+ (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1) ) )            (setq p4 (list (+ (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2) ) )            (makeline)            (setq p3 (list (- (nth 0 p1) distan_m) (nth 1 p1) (nth 2 p1) ) )            (setq p4 (list (- (nth 0 p2) distan_m) (nth 1 p2) (nth 2 p2) ) )            (makeline)        ))        (if (< (abs (- (nth 1 p1) (nth 1 p2))) 0.000001) (progn            (setq p3 (list (nth 0 p1) (+ (nth 1 p1) distan_m) (nth 2 p1) ) )            (setq p4 (list (nth 0 p2) (+ (nth 1 p2) distan_m) (nth 2 p2) ) )            (makeline)            (setq p3 (list (nth 0 p1) (- (nth 1 p1) distan_m) (nth 2 p1) ) )            (setq p4 (list (nth 0 p2) (- (nth 1 p2) distan_m) (nth 2 p2) ) )            (makeline)        ))    ))    (princ))    (if (not (= nil data_m)) (progn        (setq i 0)        (while (< i (sslength data_m)) (progn            (setq ent (entget (ssname data_m i)))            (p_check)            (if (= 1 check) (p_d_offset))            (setq i (+ i 1))        ))    ))    (princ))    (import_data)  	(ai_undo_push)    (process)  	(ai_undo_pop)    (princ))

Lênh để offset line sang 2 bên là oo.
....
Còn lắm nhưng mà ăn cơm đã..hè hè
  • 6

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#5 hau03k7

hau03k7

    biết vẽ arc

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

Đã gửi 27 January 2007 - 07:25 PM

Hay qúa,cám ơn Ji và cadviet nha..thật tuyêt..mình hiểu thêm về lisp
  • 0

#6 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 27 January 2007 - 07:52 PM

Bản vẽ cũng ổn rồi. chuẩn bị viết TEXT và Dim thôi. Nhưng trước khi chuyển sang phần mới. Tôi muốn cho cho các bạn biết thêm 2 mẹo nữa khi vẽ.

Bài 8: Break đối tượng
Nhiều người sẽ bảo có lệnh Break (br) rồi cần gì LISP. Nhưng không! Lệnh BR thường không chặt điểm mà chặt đoạn nếu ta không cẩn trọng.

(defun c:bf (/ dt diem)  (setq	dt   (car (entsel "\nVao doi tuong can chat")))  (if dt    (progn      (redraw dt 3)        (setq diem (getpoint "\nVao diem chat: "))      (redraw dt 4)    )  )    (if (and dt diem)        (command ".break" dt diem diem)  )  )

Lệnh bf sẽ giúp ta chặt đối tượng tại một điểm.

Bài 9: Nối 2 đường Line bị ngặt quãng
Hãy tưởng tượng bạn có 1 đương Line. Bạn Br nó. Đường Line giờ đã trở thành 2 đường riêng biệt, cách nhau 1 đoạn. Không cần thiết phải xoa 1 đường và EX đường kia khi bạn muốn 2 đường làm 1.

(defun c:jl (/ p1 p2 p3 ssdt entla entlb tt p1a p2a tt p1b p2b layermoi TAPLINEMOI TENLAYERMOI)  (defun thanghang (p0 p1 p2 / dx1 dy1 dx2 dy2 x1 y1 x2 y2 x0 y0)    (setq      x0  (car p0)      y0  (cadr p0)      x1  (car p1)      y1  (cadr p1)      x2  (car p2)      y2  (cadr p2)      dx1 (- x1 x0)      dy1 (- y1 y0)      dx2 (- x2 x0)      dy2 (- y2 y0)    )    (if	(equal (* dx1 dy2) (* dx2 dy1) 0.01)      t      nil    )  )  (defun noiline (p1 p2 p3 p4 / kq dmax)    (if	(and (thanghang p1 p2 p3) (thanghang p1 p2 p4))      (progn	(setq d1   (distance p1 p3)	      d2   (distance p1 p4)	      d3   (distance p2 p3)	      d4   (distance p2 p4)	      dmax (max d1 d2 d3 d4)	      kq   (cond		     ((= dmax d1) (list p1 p3))		     ((= dmax d2) (list p1 p4))		     ((= dmax d3) (list p2 p3))		     ((= dmax d4) (list p2 p4))		     (t nil)		   )	)	kq      )      nil    )  )  (init)  (setq    p1	  (getpoint "\ngocdau: ")    p2	  (getcorner p1 "\ngocsau: ")    ssdt  (ssget "c" p1 p2 '((0 . "LINE")))    entla (ssname ssdt 0)    entlb (ssname ssdt 1)    tt	  (entget entla)    p1a	  (cdr (assoc 10 tt))    p2a	  (cdr (assoc 11 tt))    tt	  (entget entlb)    p1b	  (cdr (assoc 10 tt))    p2b	  (cdr (assoc 11 tt))    tenlayermoi (cdr (assoc 8 (entget entla)))  )  (if (setq taplinemoi (noiline p1a p2a p1b p2b))    (progn      (command ".erase" ssdt "")      (entmake	(list	  (cons 0 "LINE")	  (cons 8 tenlayermoi)	  (cons 10 (car taplinemoi))	  (cons 11 (cadr taplinemoi))	)      )            (traos)    )    (princ "\nKhong the noi line duoc !")  )  (done))

Lệnh jl rất tiện. Bạn thử dùng mà xem...

Hẹn gặp lại vào bài sau "Những Lisp sử dụng để hoàn thiện bản vẽ". Chúc các bạn vui vẻ
  • 5

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#7 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 28 January 2007 - 02:48 AM

Tiếp tục nào. Chán với mấy cái cửa, với mấy đường LINE rồi. Giờ ta Hatch nhé.

Bài 10: Hiệu chỉnh Hatch

(defun c:hc ()  	(setq elist	(entget (car (entsel "\nLUA CHON MAU HATCH DE SAO CHEP: ")))		etyp	(cdr (assoc 0 elist))		old 	(getvar "clayer")	);setq	(if (/= etyp "HATCH")		(prompt "\nKHONG PHAI DOI TUONG HATCH! HAY THU LAI!")		(progn			(setq layn (cdr (assoc 8 elist)))  			(setvar "HPNAME" (cdr (assoc 2 elist)))  			(setvar "HPSCALE" (cdr (assoc 41 elist)))  			(setvar "HPANG" (cdr (assoc 52 elist)))  			(setq pt1 (getpoint "\nCHON MOT DIEM TRONG VUNG SE HATCH: "))			(setvar "clayer" layn)  			(command "bhatch" pt1 "")			(setvar "clayer" old)		);progn	);if(princ));defun;****** mk ****** mk ****** mk ****** mk ****** mk ****** mk ******(defun c:hm ()  	(setq ename	(entsel "\nLUA CHON MAU HATCH DE DI CHUYEN: ")		elist (entget (car ename))		etyp	(cdr (assoc 0 elist))		old 	(getvar "clayer")	);setq	(if (/= etyp "HATCH")		(prompt "\nKHONG PHAI DOI TUONG HATCH! HAY THU LAI!")		(progn			(setq layn (cdr (assoc 8 elist)))  			(setvar "HPNAME" (cdr (assoc 2 elist)))  			(setvar "HPSCALE" (cdr (assoc 41 elist)))  			(setvar "HPANG" (cdr (assoc 52 elist)))  					        (setq pt1 (getpoint "\nCHON MOT DIEM TRONG VUNG SE HATCH: "))			(setvar "clayer" layn)			(entdel (car ename))  			(command "bhatch" pt1 "")			(setvar "clayer" old)		);progn	);if(princ));defun;****** mk ****** mk ****** mk ****** mk ****** mk ****** mk ******(defun c:ha		()  	(setq ename(entsel "\nLUA CHON MAU HATCH DE THAY DOI GOC : ")		elist(entget (car ename))		etyp(cdr (assoc 0 elist))		oang(assoc 52 elist)	);setq	(if (/= etyp "HATCH")		(prompt "\nKHONG PHAI DOI TUONG HATCH! HAY THU LAI!")		(progn		(setq ang  (getangle (strcat "\nSO DO GOC MOI <" (rtos (cdr oang) 2) ">:"))		nang (cons 52 ang)		nlst (subst nang oang elist)		)		(entmod nlst)		(command "hatchedit" ename "" "" "" "")		);progn	);if(princ));defun;****** mk ****** mk ****** mk ****** mk ****** mk ****** mk ******(defun c:hs		()  	(setq ename	(entsel "\nLUA CHON MAU HATCH DE THAY DOI TY LE : ")		elist (entget (car ename))		etyp	(cdr (assoc 0 elist))		oscl (assoc 41 elist)	);setq	(if (/= etyp "HATCH")		(prompt "\nKHONG PHAI DOI TUONG HATCH! HAY THU LAI!")		(progn		(setq hscl (getreal (strcat "\nTY LE MAU HATCH MOI <" (rtos (cdr oscl) 2) ">:"))					nscl (cons 41 hscl)					nlst (subst nscl oscl elist)			)		(entmod nlst)		(command "hatchedit" ename "" "" "" "")		);progn	);if(princ));defun

Trong lisp này cung cấp cho chúng ta những lện sau
1. hc: Copy Hatch
1. hm: Move Hatch
1. ha: Chỉnh góc của mấu Hatch
1. hs: Chỉnh độ Scale của mẫu Hatch
  • 1

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#8 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 28 January 2007 - 02:56 AM

Bài 11: Hiệu chỉnh Text
AutoDesk cung cấp cho chúng ta một lisp rất hây, nhưng lại được ít người quan tâm, và đây !


Lệnh cht giúp ta rất nhiều khi hiệu chỉnh chữ, ví dụ như chiều cao, góc...ta chẳng cần phải vào bảng thuộc tính (Ctrl+1) để sửa nữa, mọi thứ đều dùng dòng lệnh, nhanh hơn gấp bội...
  • 0

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#9 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 28 January 2007 - 03:46 AM

Thế đấy ! Giờ thì bản vẽ đã ổn thỏa. Chẳng còn gì để làm nữa. Nhưng với đống LISP kia thì sao nhỉ? Nhiều file *.LSP quá @_@. Làm gì?

Bài 12: Chuyển LSP sang VLX
Công cụ này thì cực hay. Vì từ hàng trăm file LSP ta có thể chuyển thành 1 file VLX, gọn, nhẹ, bảo mật cao hơn...

Posted Image

Các bước thực hiện.

Bước 1: Khởi động Cad, tại dòng Command nhập lệnh vlide.

Posted Image

Bước 2: Trong cửa sổ Visual Lisp for AutoCad, nhấn vào File/Make Application/New Application Wizard

Posted Image

Bước 3: Chọn Simple vầ nhấn Next

Posted Image

Bước 4: Lựa chọn đường dẫn (Application Location) và tên file (Application Name) Rồi nhấn Next

Posted Image

Bước 5: Nhấn vào nút Add, 1 cửa sổ chọn file hiện ra, select tất cả các file LSP, rồi nhấn Open

Posted Image

Bước 6: Các file LSP vừa lựa chọn được cập nhật và bảng danh sách, nhấn Next

Posted Image

Bước 7: Nhấn Finish để kết thúc.

Posted Image

Quá trình này kết thúc thành công bàng 1 thông báo hoàn thành

Posted Image

Ok. Giờ thì file VLX duy nhất đã được tạo ra, rất gọn, rất nhẹ và bảo mật cao hơn..0_0

Nếu bạn không muốn mất thời gian, có thể tải file vlxcoban.vlx tại đây:

http://thunglungden.org/cadviet/cad/lisp/v...an/vlxcoban.vlx

Kết thúc. Chúc các bạn thành công với bộ lisp cơ bản này. Hẹn gặp lại lần sau với một bộ lisp năng cao, phát huy hết các tính năng của CAD.

Chào thân ái ! :lol:
  • 14

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#10 nk169

nk169

    Chưa sử dụng CAD

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

Đã gửi 28 January 2007 - 10:24 AM

quá hay !nhưng lisp này giúp cho công việc của mình nhẹ nhàng và nhanh hơn gấp bội.nhất là các bài viết này gíup mình hiểu hơn về cad một công cụ mà mình dùng thường xuyên
  • 0

#11 khimatro

khimatro

    biết zoom

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

Đã gửi 08 February 2007 - 07:09 PM

cái này hay thật mình rất kết con này, bây h thì chỉ cần 1 file duy nhất.Nhưng mình thắc mắc có thể lấy file *.LSP từ trong file *.VLX không? nếu có thể bạn bày cách luôn nhé :lol:
  • 0

#12 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 08 February 2007 - 11:57 PM

Khi đã convert sang VLX rồi tức là mã đã chuyển thành mã máy (kiểu file exe) nên không có cách nào chuyển trực tiệp được cả. Vẫn có cách chuyển nhưng không phải trực tiếp, mà những cách này thì phải dân IT mới làm được...
  • 1

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#13 trantrung78

trantrung78

    biết zoom

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

Đã gửi 16 March 2007 - 04:47 PM

Bác Jikibo oi! sao mấy cái đoạn CODE mà bác post lên, tôi copy lại, tạo file lisp mới rồi Paste vô, load vào acad nhưng lại không sử sử dụng được bác oi! Lúc tôi paste vào trong notepad các đoạn lệnh không nhảy cách dòng như trong bài post của bác vậy có phải là sai không hả bác! nhờ bác chỉ giáo thêm với, cám ơn bác nhiều!
  • 0

#14 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 16 March 2007 - 06:44 PM

Đúng thật. Vừa thử copy và paste sang notepad thì nó không còn chĩnh xác về các dấu xuống dòng nữa. Nhưng không sao. Để tiện cho sử dụng Ji đã compile 2 VLX rồi. Dừng luôn file VLX đó cho nhẹ...ok
  • 1

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#15 hung303

hung303

    biết zoom

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

Đã gửi 24 April 2007 - 04:00 PM

Cám ơn bác đã san sẻ cho AE đỡ cực nhọc :lol:
  • 0

#16 phanhkissss

phanhkissss

    Chưa sử dụng CAD

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

Đã gửi 10 May 2007 - 10:07 AM

Anh cho hỏi lúc chuyển file tu LSP sang VLX em ko select được tất cả các file SLP ma chỉ chọn được từng file một để chuyển đổi thôi.Em xai CAd 05
  • 0

#17 vbao

vbao

    biết lệnh array

  • CADViet Team
  • PipPipPip
  • 184 Bài viết
Điểm đánh giá: 80 (tàm tạm)

Đã gửi 10 May 2007 - 10:53 AM

Anh cho hỏi lúc chuyển file tu LSP sang VLX em ko select được tất cả các file SLP ma chỉ chọn được từng file một để chuyển đổi thôi.Em xai CAd 05



tôi gặp phải lỗi này khi sử dụng file vẽ cửa sổ = second point :; error: bad argument type: lentityp nil
và file vẽ cửa đi = Hay vao huong cua: ; error: no function definition: L3D_KHONGTHANGHANG
xin hướng dẫn cách khắc phục
  • 0

#18 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 10 May 2007 - 11:13 AM

Anh cho hỏi lúc chuyển file tu LSP sang VLX em ko select được tất cả các file SLP ma chỉ chọn được từng file một để chuyển đổi thôi.Em xai CAd 05

Cách bình thường là được nhiều file mà bạn!
Bạn có thể môt tả cách làm của bạn được không?
  • 0

#19 be_chanh

be_chanh

    biết lệnh adcenter

  • Moderator
  • PipPipPipPipPipPipPip
  • 1712 Bài viết
Điểm đánh giá: 889 (rất tốt)

Đã gửi 14 May 2007 - 08:42 PM

tôi gặp phải lỗi này khi sử dụng file vẽ cửa sổ = second point :; error: bad argument type: lentityp nil
và file vẽ cửa đi = Hay vao huong cua: ; error: no function definition: L3D_KHONGTHANGHANG
xin hướng dẫn cách khắc phục


Lỗi này là khi bạn dùng 1 trong 3 lisp vẽ cửa đi (c1,c2,c4). Khi bạn chọn hướng của cửa, bạn phải chọn vào 1 trong mặt vùng được ngăn cách bằng đường thẳng nối từ 2 điểu đầu và cuối (vừa pick).
  • 0

t: 097.323.1199 | m: cudstk@gmail.com | w: http://www.aicollect.com


#20 h1000740

h1000740

    Chưa sử dụng CAD

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

Đã gửi 17 May 2007 - 08:16 PM

anh oi tôi copy doạn code này nhưng không thể chạy được vẻ cửa và cửa sổ
cả hai đoạn code trên đều báo lỗi là KHONGTHANGHANG
XIN ANH COI LAI VA CHI GIÙM TÔI NGHI DÂY LA PHẦN RẤT HAY VÀ TIỆN LỢI
  • 2