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

#61 exitdream

exitdream

    biết zoom

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

Đã gửi 13 April 2008 - 09:36 PM

Mãi chưa thấy phần nâng cao .hic...Sao em dùng lệnh cửa đí đến bước chọn Hướng vào của em đã kick ra 1 điêm khác ko thẳng hàng rồi mà nó chả hiện ra cái rì dòng lệnh nhảy về COMMAND màn hình vẫn trắng tinh ??????????????? Thứ nữa là cái file VLX bác JIKIBO up lên sao em mở ra toàn thấy ô vuông .... Lỗi font chăng ?
Có gì ko phải xin bỏ quá cho
  • 0
Càng học càng thấy mình còn quá non kém

#62 Ar_Chanwoo

Ar_Chanwoo

    biết lệnh break

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

Đã gửi 13 April 2008 - 09:43 PM

Mãi chưa thấy phần nâng cao .hic...Sao em dùng lệnh cửa đí đến bước chọn Hướng vào của em đã kick ra 1 điêm khác ko thẳng hàng rồi mà nó chả hiện ra cái rì dòng lệnh nhảy về COMMAND màn hình vẫn trắng tinh ??????????????? Thứ nữa là cái file VLX bác JIKIBO up lên sao em mở ra toàn thấy ô vuông .... Lỗi font chăng ?
Có gì ko phải xin bỏ quá cho

Không phải lỗi font đâu bạn ? Đó là file lisp đã đc mã hoá để người khác không chỉnh sửa đc ! Tất nhiên là có chương trình dịch ngược nhưng số người có cái này hạn chế lắm !
  • 0

#63 nguyenhoangvuong83

nguyenhoangvuong83

    biết vẽ circle

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

Đã gửi 06 June 2008 - 11:47 AM

Mình thử lại thì lệnh HACTH được rồi nhưng mấy cái cửa thì chịu thua
a` còn thằng nối LINE này nữa
Command: jl ; error: no function definition: INIT

Sao vẫn không dc nhỉ. Ặc ặc!

Mình cũng bị lỗi lệnh nối line. Mong AE fix lỗi giúp.
Command: jl

Error:no function definition: INIT; error: An error has occurred inside the
*error* functionbad argument type: fixnump: "BYLAYER"
nhập lệnh xong nó báo thế đó. mình đã kiểm tra kỹ code lưu về với code trên diễn đàn thi thấy hoàn toàn giống nhau.
Down file VLX về vẫn báo lỗi như thế đấy. bó tay luôn
  • 0
CHình đã gửiDVietHình đã gửi

#64 kiencon_vn

kiencon_vn

    Chưa sử dụng CAD

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

Đã gửi 11 July 2008 - 03:27 PM

các lỗi bạn mắc phải hoàn toàn là do bạn. như ở lisp vẽ cửa thì bạn chọn 3 điểm thẳng hàng nhau nên không được. có thể bạn để chế độ bắt điểm nên không để ý đến điểm vừa bắt. các lisp khác bạn tự tìm nguyên nhân nhé...





ko phai vay dau bac oi.3 diem ko thang hang cung ko dc.
  • 0

#65 ABC

ABC

    biết zoom

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

Đã gửi 09 August 2008 - 10:22 PM

Sao code phần cửa đi lại không thực hiện được hà các ban ơi kiểm tra lại dum nhé
  • 0

#66 hatieu

hatieu

    biết vẽ pline

  • Advance Member
  • PipPip
  • 67 Bài viết
Điểm đánh giá: 13 (tàm tạm)

Đã gửi 21 August 2008 - 10:30 AM

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

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



CÁI NÀY HAY QUÁ HA. THANKS.....
NHƯNG BÂY GIỜ EM MUỐN TẠO KIỂU DIM KHÁC VÍ DỤ KIỂU CHỮ KHÁC, KIỂU MŨI TÊN KHÁC, KÍCH THƯỚC MŨI TÊN KHÁC,..... VÀ MỘT SỐ GIÁ TRỊ KHÁC. THÌ EM PHẢI BIẾT Ý NGHĨA CỦA CÁC BIẾN VAR BÊN TRÊN, EM CHỈ BIẾT MỘT SỐ, CÒN MỘT SỐ BIẾN EM TÌM MÃI KHÔNG RA. MONG BÁC CHỈ GIÙM. CẢM ƠN RẤT NHIỀU.....
  • 0
Công ty cổ phần đầu tư và xây dựng AGA
Chuyên tư vấn, cung cấp, thi công hệ vách dựng nhôm kính khổ lớn, cửa nhôm kính,
kính cường lực, vách ngăn, lan can, cầu thang kinh, lam nhôm chăn nắng.
Hot: 0984.985.119

#67 hieubuiduc

hieubuiduc

    Chưa sử dụng CAD

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

Đã gửi 26 August 2008 - 11:32 AM

bác jikibo ơi, link die rồi hay sao vậy, có cách nào cho mình xin file đc k. Thanks nhiều
  • 0

#68 hero_alone99

hero_alone99

    Chưa sử dụng CAD

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

Đã gửi 08 September 2008 - 04:27 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è

Hi pro.e chưa làm đc lệnh oo này.xin chỉ lại chi tiết cho e đc ko.thanks pro.:lol:
  • 0

#69 haimeadi

haimeadi

    biết pan

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

Đã gửi 26 September 2008 - 07:59 AM

Các bác giúp tôi chuyển file có đuôi lsp sang vlx với. Tôi có 3 file mà khi chuyển nó báo lỗi:
; Compilation aborted
; error: compiler found fatal error[s] "4 C.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "16 C.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "21 C.lsp"
http://www.cadviet.c...les/Vlx_lsp.rar
  • 0

#70 haimeadi

haimeadi

    biết pan

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

Đã gửi 07 October 2008 - 08:00 AM

Các bác giúp tôi chuyển file có đuôi lsp sang vlx với. Tôi có 3 file mà khi chuyển nó báo lỗi:
; Compilation aborted
; error: compiler found fatal error[s] "4 C.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "16 C.lsp"
; Compilation aborted
; error: compiler found fatal error[s] "21 C.lsp"
http://www.cadviet.c...les/Vlx_lsp.rar

Bác Jikibo, bác Nguyễn Hoành, bác ssg và các bác khác đâu sao không giúp cho tôi cái. Cảm ơn các bác nhiều.
Tôi không hiểu về lisp nên nhờ các bác bớt chút thời gian giúp tôi với nhé.
  • 0

#71 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 07 October 2008 - 08:15 AM

Bác Jikibo, bác Nguyễn Hoành, bác ssg và các bác khác đâu sao không giúp cho tôi cái. Cảm ơn các bác nhiều.
Tôi không hiểu về lisp nên nhờ các bác bớt chút thời gian giúp tôi với nhé.


lisp của bạn có chạy được đâu mà biên dịch ra vlx.
bạn đã thử chạy lisp của bạn chưa?
  • 0

#72 haimeadi

haimeadi

    biết pan

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

Đã gửi 08 October 2008 - 11:06 AM

lisp của bạn có chạy được đâu mà biên dịch ra vlx.
bạn đã thử chạy lisp của bạn chưa?

Chạy được đấy bác ạ. Em đang dùng mà
File 30.lsp dùng cho file 4 C.lsp. Còn file 21 C.lsp em copy file acadiso.pat và file acad.slb vào mục
C:\Documents and Settings\Thanh Hai\Application Data\Autodesk\AutoCAD 2007\R17.0\enu\Support
là dùng được. Từ trước đến giờ em vẫn dùng bình thường. Nhưng nhiều file lisp quá thấy các anh chỉ cho cách
tạo thành file có đuôi vlx nên em làm thử mà nó bị lỗi. Anh chỉ cho em cái nhé. Đây là những file của em đang dùng
kèm với các file mà em đã gửi trước http://www.cadviet.com/upfiles/30.rar
  • 0

#73 Nguyen Hoanh

Nguyen Hoanh

    biết lệnh adcenter

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

Đã gửi 08 October 2008 - 11:16 AM

Chạy được đấy bác ạ. Em đang dùng mà
File 30.lsp dùng cho file 4 C.lsp. Còn file 21 C.lsp em copy file acadiso.pat và file acad.slb vào mục
C:\Documents and Settings\Thanh Hai\Application Data\Autodesk\AutoCAD 2007\R17.0\enu\Support
là dùng được. Từ trước đến giờ em vẫn dùng bình thường. Nhưng nhiều file lisp quá thấy các anh chỉ cho cách
tạo thành file có đuôi vlx nên em làm thử mà nó bị lỗi. Anh chỉ cho em cái nhé. Đây là những file của em đang dùng
kèm với các file mà em đã gửi trước http://www.cadviet.com/upfiles/30.rar

Tôi cũng giống như ACAD stupid lắm, không quan tâm đến chức năng lisp của bạn là gì đâu,
chỉ biết rằng load cả 3 file của bạn lên đều báo lỗi: ; error: extra right paren on input

Load lên còn báo lỗi, làm sao biên dịch được.
  • 0

#74 haimeadi

haimeadi

    biết pan

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

Đã gửi 09 October 2008 - 09:22 AM

Tôi cũng giống như ACAD stupid lắm, không quan tâm đến chức năng lisp của bạn là gì đâu,
chỉ biết rằng load cả 3 file của bạn lên đều báo lỗi: ; error: extra right paren on input

Load lên còn báo lỗi, làm sao biên dịch được.

Em được người khác chỉ cho làm và xem ở trên diễn đàn nên thử sửa thành của mình và đổi đuôi theo chỉ dẫn của các anh mà nó báo lỗi. Em mù mờ về lisp lắm nên mới nhờ anh. Anh sửa các file lisp đấy giúp em cái. Anh giúp em cái nhé.
  • 0

#75 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 09 October 2008 - 09:36 AM

...............
Em mù mờ về lisp lắm nên mới nhờ anh.
.....................

Bác "mù mờ về LISP" thì chuyễn qua file *.vlx làm chi ?
Bản chất của LISP là "mở" thì cứ để như thế (*.lsp), anh em còn giúp bác sửa lổi được.

T/hợp muốn gom vào 1 file : bác cứ việc open các file rồi copy & paste thành 1 file.
  • 0

#76 hphuoc99

hphuoc99

    Chưa sử dụng CAD

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

Đã gửi 18 October 2008 - 10:41 PM

Rất cám ơn anh đã chỉ bảo,nhưng em sử dụng chưa rành lắm,có lệnh được lệnh không,anh có thể cho em xin 1 vdụ cho tứng lệnh đc không,có thương thí thương cho chỏt đi anh.
  • 0

#77 coldmountain4891

coldmountain4891

    biết vẽ line

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

Đã gửi 24 November 2008 - 06:03 AM

Thông thường khi vẽ kiến trúc người ta sẽ vẽ tim đầu tiên, sau đó offset sang 2 bên hoặc dùng lệnh mline để vẽ, lisp trên của a theo e còn có hạn chế là sau khi offset sang 2 bên thì đối tượng mới trùng layer với đối tượng cũ, như vậy sẽ rất khó khăn khi tách (theo kiểu on/off layer) đối tượng ra để chỉnh sửa trong những bản vẽ phưc tạp.

đúng thế! mong bác jikibo có thể sửa lại lisp offset 2 để trước khi thực hiện offset ta có thể chọn lớp trước thì đối tượng mới sẽ có lớp khác với lớp của đối tượng cũ nếu được thế thì thật là tốt
  • 0

#78 Gathienology

Gathienology

    biết pan

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

Đã gửi 16 December 2008 - 05:31 PM

Hay quá. Cảm ơn bác.
  • 0

#79 Gathienology

Gathienology

    biết pan

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

Đã gửi 16 December 2008 - 06:55 PM

Bác cho em hỏi lisp để tính diện tích. Em thường dùng chú này
 (Defun c:dt()
(setvar "cmdecho" 0)
(command "osnap" "none")
(initget "Heso Do")
(setq pt (getpoint "\n He so / :"))
(if (= pt "Heso")
(progn
(setq am (getreal "Cho he so"))
(if (and (null am) (/= ac 0))
(setq am ac)
)
(setq pt (getpoint "\n Chon diem: "))
)
(setq ac am))

(if (or (= am 0) (null am)) (setq am 1))
(setq s 0)
(progn
; (setq pt (getpoint "\n Chon diem: "))
(while pt
(setq entold (cdr (assoc 5 (entget (entlast)))))
(command "boundary" pt "")
(setq entnew (cdr (assoc 5 (entget (entlast)))))
(if (/= entold entnew)
(progn
(setq entnew (entget (entlast)))
(if (assoc 62 entnew)
(setq entnew (subst (cons 62 (+ 3 (cdr (assoc 62 entnew)))) (assoc 62 entnew) entnew))
(setq entnew (append entnew (list (cons 62 (+ 3 (cdr (assoc 62 (tblsearch "layer" (cdr (assoc 8 entnew))))))))))
)


(entmod entnew)
(Command "area" "o" (entlast))
(setq s (+ s (getvar "area")))
(setq pt (getpoint "\n Chon diem: "))
(entdel (entlast))
)
(progn
(princ "chon diem sai")
(setq pt (getpoint "\n Chon diem: "))
)
)
)

)

(setvar "osmode" 167)
(princ(* s am))
(princ)
)

mà hay bị lỗi lắm. Có cái nào ngon hơn không ạ?
  • 0

#80 svba1608

svba1608

    Tưởng Thị Tú Khuyên

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

Đã gửi 16 December 2008 - 09:29 PM

Lisp này hay quá! Mỗi tội … không dùng được! hihihi. Em down file vlxcoban.vlx về và upload nhưng các lệnh đều không thực hiện được. Ví dụ lệnh offset sang hai bên (oo): gõ xong lệnh, chọn xong đối tượng, nhập xong khoảng cách là nó … ngừng, chả thấy đường nào được vẽ thêm ra nữa. Còn lệnh nối line và arc thành pline, gõ xong lệnh, chọn xong đối tượng thì cad … đơ luôn, đến bây giờ chưa hồi phục.
Có bác nào dùng thành công rồi giải thích giùm em với!
  • 0
http://khuyen.space