Đến nội dung


Hình ảnh
- - - - -

nhờ các cao thủ viết dùm lisp hatch,ve thang cat.


  • Please log in to reply
18 replies to this topic

#1 thanhsitp

thanhsitp

    biết vẽ line

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

Đã gửi 21 September 2010 - 07:57 PM

hatch:
lisp 1:khi nhập lệnh h thì tự chuyển layer hatch và xuất hiện hợp thoại hatch cho chọn vật liệu và hatch bình thường như lệch hatch của cad.
lisp 2:khi nhập lệnh hh thì tự chuyển layer hatch và cho ta hatch = mặt cắt solid (lưu ý:không xuất hiện hộp thoại hatch,chỉ cần nhập lệnh tự chuyển layer hatch,pick chon miền,enter->được hatch solid)

vẽ thang cắt:
khi nhập lệnh,pick 2 điểm cad tự tính ra chiều cao của thang,pick điểm bắt đầu,nhập bề rộng bậc và số bật->ta duoc thang cắt (lưu ý:vì pick 2 điểm(chiều cao của tầng)nên chiều cao thang có thể lẽ nên lisp này là tối ưu nhất)
  • 0

#2 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 21 September 2010 - 09:28 PM

hatch:
lisp 1:khi nhập lệnh h thì tự chuyển layer hatch và xuất hiện hợp thoại hatch cho chọn vật liệu và hatch bình thường như lệch hatch của cad.
lisp 2:khi nhập lệnh hh thì tự chuyển layer hatch và cho ta hatch = mặt cắt solid (lưu ý:không xuất hiện hộp thoại hatch,chỉ cần nhập lệnh tự chuyển layer hatch,pick chon miền,enter->được hatch solid)

vẽ thang cắt:
khi nhập lệnh,pick 2 điểm cad tự tính ra chiều cao của thang,pick điểm bắt đầu,nhập bề rộng bậc và số bật->ta duoc thang cắt (lưu ý:vì pick 2 điểm(chiều cao của tầng)nên chiều cao thang có thể lẽ nên lisp này là tối ưu nhất)

Mình chỉnh đoạn lisp của Tue_VN bạn dùng cho hatch còn thang thì chờ người khác ha bạn.
(defun c:h(/ ov vl)
(setq vl '("clayer" "cmdecho"); Sys Var list
ov (mapcar 'getvar vl)); Get Old values
(setvar "cmdecho" 1)
(if (tblsearch "layer" "Hatch")
(setvar "CLAYER" "Hatch")
(command "-layer" "M" "Hatch" "" ) )
(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
)
(mapcar 'setvar vl ov); reset Sys Vars
(princ)
)

(defun c:hh(/ ov vl)
(setq vl '("clayer" "cmdecho"); Sys Var list
ov (mapcar 'getvar vl)); Get Old values
(setvar "cmdecho" 1)
(if (tblsearch "layer" "Hatch")
(setvar "CLAYER" "Hatch")
(command "-layer" "M" "Hatch" "" ) )
(setvar "hpname" "SOLID")
(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
)
(mapcar 'setvar vl ov); reset Sys Vars
(princ)
)

  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#3 thanhsitp

thanhsitp

    biết vẽ line

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

Đã gửi 21 September 2010 - 10:36 PM

Mình chỉnh đoạn lisp của Tue_VN bạn dùng cho hatch còn thang thì chờ người khác ha bạn.
(defun c:h(/ ov vl)
(setq vl '("clayer" "cmdecho"); Sys Var list
ov (mapcar 'getvar vl)); Get Old values
(setvar "cmdecho" 1)
(if (tblsearch "layer" "Hatch")
(setvar "CLAYER" "Hatch")
(command "-layer" "M" "Hatch" "" ) )
(initdia)
(command "hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
)
(mapcar 'setvar vl ov); reset Sys Vars
(princ)
)

(defun c:hh(/ ov vl)
(setq vl '("clayer" "cmdecho"); Sys Var list
ov (mapcar 'getvar vl)); Get Old values
(setvar "cmdecho" 1)
(if (tblsearch "layer" "Hatch")
(setvar "CLAYER" "Hatch")
(command "-layer" "M" "Hatch" "" ) )
(setvar "hpname" "SOLID")
(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
)
(mapcar 'setvar vl ov); reset Sys Vars
(princ)
)

lisp của bạn sử dụng được nhưng mình vẫn chưa hài lòng.mình muốn khi sử dụng lệnh h và hh thì layer hatch sẽ hiện hành trước rồi mới thực hiện lệnh.tại vì khi sử dụng lệnh của bạn dlick vào hatch thì tab hatch muc swatch nó là màu của layer đang hiện hành trước đó chứ ko phải by layer của layer hatch nên mình ko thể sử dụng được.Rất mong bạn sửa lại dùm (vì đó là quy định của cty mình).Xin chân thành cảm ơn bạn.
  • 0

#4 VUVUZELA

VUVUZELA

    biết lệnh chamfer

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

Đã gửi 21 September 2010 - 10:42 PM

Chài
Chú này "được voi đòi Hai Bà Trưng" ghê nhỉ
Chú làm công ty nước ngoài lãnh tiền đô USD
Anh em CadViet lãnh tiền Việt, sao bì chú được
Thế mà chú đòi hỏi a e viết nhiều quá
Thôi bữa nào
:(
a e bày hết tuyệt chiêu cho nhé
keke
  • 1

Hệ thống Liên Kết, Thiết Kế Tự Động

ttps://www.facebook...etThietKeTuDong


#5 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 22 September 2010 - 12:11 AM

lisp của bạn sử dụng được nhưng mình vẫn chưa hài lòng.mình muốn khi sử dụng lệnh h và hh thì layer hatch sẽ hiện hành trước rồi mới thực hiện lệnh.tại vì khi sử dụng lệnh của bạn dlick vào hatch thì tab hatch muc swatch nó là màu của layer đang hiện hành trước đó chứ ko phải by layer của layer hatch nên mình ko thể sử dụng được.Rất mong bạn sửa lại dùm (vì đó là quy định của cty mình).Xin chân thành cảm ơn bạn.

Lạ nhỉ.Mình thấy có ảnh hưởng j đâu.Trong lisp này thì trước khi thực hiện lệnh h,hh,cad đều chuyển layer về layer hatch,rồi hatch xong lại trả về layer cũ mà.CÒn khi kick đúp vào miền hatch,nếu là hatch bình thường,thì tab swatch sẽ hiện lên kiểu hatch chứ ^^.Còn với solid,nó sẽ ghi By layer.Nhưng mình thì nghĩ,đã solid rồi thì by layer nào mà khi in ra nó chẳng...đen thùi lùi 1 đống.Miễn là màu của nó khi hiển thị là màu của layer hatch là okie rùi..
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#6 thanhsitp

thanhsitp

    biết vẽ line

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

Đã gửi 22 September 2010 - 07:02 AM

Lạ nhỉ.Mình thấy có ảnh hưởng j đâu.Trong lisp này thì trước khi thực hiện lệnh h,hh,cad đều chuyển layer về layer hatch,rồi hatch xong lại trả về layer cũ mà.CÒn khi kick đúp vào miền hatch,nếu là hatch bình thường,thì tab swatch sẽ hiện lên kiểu hatch chứ ^^.Còn với solid,nó sẽ ghi By layer.Nhưng mình thì nghĩ,đã solid rồi thì by layer nào mà khi in ra nó chẳng...đen thùi lùi 1 đống.Miễn là màu của nó khi hiển thị là màu của layer hatch là okie rùi..


bạn thông cảm,đó là qui định của khàng,bạn làm ơn sửa lại cái hatch solid dùm mình nha.cảm ơn nhiều.
  • 0

#7 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 22 September 2010 - 10:37 AM

hatch:
lisp 1:khi nhập lệnh h thì tự chuyển layer hatch và xuất hiện hợp thoại hatch cho chọn vật liệu và hatch bình thường như lệch hatch của cad.
lisp 2:khi nhập lệnh hh thì tự chuyển layer hatch và cho ta hatch = mặt cắt solid (lưu ý:không xuất hiện hộp thoại hatch,chỉ cần nhập lệnh tự chuyển layer hatch,pick chon miền,enter->được hatch solid)

vẽ thang cắt:
khi nhập lệnh,pick 2 điểm cad tự tính ra chiều cao của thang,pick điểm bắt đầu,nhập bề rộng bậc và số bật->ta duoc thang cắt (lưu ý:vì pick 2 điểm(chiều cao của tầng)nên chiều cao thang có thể lẽ nên lisp này là tối ưu nhất)

Bạn có thể dùng cái vẽ mặt vắt thang này do mình viết.

Mình là KTS giống như bao KTS khác đều ngại vẽ mặt cắt cầu thang. Chính vì vậy mình muốn xây dựng lisp để làm công việc này được nhanh chóng thuận lợi.
Mình đã xây dựng được code như thế này. Mong các bạn đóng góp ý kiến thêm để mình hoàn chỉnh.
Hình đã gửi
đây là code


(defun c:cat ()
(setvar "cmdecho" 0)
(setq old_layer (getvar "clayer"))
(setq tbl (tblsearch "layer" "_cat"))
(if (= tbl nil) (command "-layer" "n" "_cat" "c" "4" "_cat" ""))
(setq tbl1 (tblsearch "layer" "_hatch"))
(if (= tbl1 nil) (command "-layer" "n" "_hatch" "c" "8" "_hatch" ""))
(setq tbl2 (tblsearch "layer" "_thay"))
(if (= tbl2 nil) (command "-layer" "n" "_thay" "c" "23" "_thay" ""))
(setvar "clayer" "_cat")
(setq pc1 (getpoint "\nChon diem thu nhat: "))
(setq pc2 (getpoint "\nChon diem thu hai: " pc1))
(command "-view" "s" "v1")
(setq p (getpoint "\nChon diem de ve mat cat: "))
(command "-view" "s" "v2")
(setq ct (getreal "\nVao chieu cao tang: "))
(setq sb1 (getint "\nVao so bac: "))
(command "-view" "r" "v1")
(setq catb (ssget "f" (list pc1 pc2)))
(setq i 0)
(setq listpoint nil)
(setq listbac nil)
(while (< i (sslength catb))
(setq n (ssname catb i))
(setq pl1 (cdr (assoc 10 (entget n))))
(setq pl2 (cdr (assoc 11 (entget n))))
(setq pcat (inters pc1 pc2 pl1 pl2))
(setq listpoint (append listpoint (list pcat)))
(setq i (1+ i))
)
(setq i1 0)
(setq sb 0)
(while (< (1+ i1) (length listpoint))
(setq po1 (nth i1 listpoint))
(setq po2 (nth (1+ i1) listpoint))
(setq bac (distance po1 po2))
(setq listbac (append listbac (list bac)))
(if (equal (nth 0 (reverse listbac)) (nth 1 (reverse listbac)))
(setq sb (+ i1 2))
)
(setq i1 (1+ i1))
)
(vethangthang)
)

(defun vethangthang ()
(setq nb 20.0 bk 10.0
MBTong1 "ANSI32" tl1 100 angh1 0
MBTong2 "ar-conc" tl2 10 angh2 0
MBTong3 "ANSI31" tl3 200 angh3 0
MBTong4 "ar-sand" tl4 4 angh4 0
r (car listbac)
c (/ ct sb1)
d 100
oldos (getvar "osmode")
di (* sb (sqrt (+ (* c c) (* r r))))
ang (atan (/ c r))
p01 (polar p 0 10)
p02 (polar p01 (/ (* 270 pi) 180) 20)
p03 (polar p02 ang (/ 20 (sin ang)))
p2 (polar p02 ang di)
p22 (polar p2 (/ (* 90 pi) 180) 20)
p222 (polar p22 (/ (* 180 pi) 180) 10)
p3 (polar p03 0 (/ d (sin ang)))
p33 (polar p02 0 (/ d (sin ang)))
p4 (polar p2 (/ (* 3 pi) 2) (/ d (cos ang)))
dibt (/ 10 (cos ang))
pbt1 p02
pbt3 (polar p02 ang (/ (distance p02 p2) sb) )
pbt2 (list (car pbt1) (cadr pbt3) 0)
pbt4 (polar pbt2 (/ (* 90 pi) 180) 10)
)
(setvar "osmode" 0 )
(command "-view" "r" "v2")
(command ".pline")
(command p)
(repeat sb
(command
(strcat "@0," (rtos (- c (* 2.0 bk))))
(strcat "@" (rtos (- bk nb)) ",0")
"a"
(strcat "@0," (rtos (* 2.0 bk)))
"l"
(strcat "@" (rtos (+ (- nb bk) r)) ",0")
)
)
(command "")
(setvar "cmdecho" 0)
(command "line" p p01 "")
(setq el4 (entlast))
(command "pline" pbt1 pbt2 pbt3 "C")
(setq eL1 (entlast))
(command "hatch" MBTong3 tl3 angh3 eL1 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq eL2 (entlast))
(command "line" pbt3 (list (car p) (cadr pbt3) 0) "")
(setq eL3 (entlast))
(command "ucs" "z" p02 p2)
(command "ARray" el1 el2 el3 el4 "" "R" "1" sb (/ di sb))
(command "ucs" "")
(command "-BOUNDARY" pbt4 "")
(setq eL5 (entlast))
(command "rectang" p pbt2)
(setq eL6 (entlast))
(command "hatch" MBTong4 tl4 angh4 eL5 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq eL8 (entlast))
(command "hatch" MBTong4 tl4 angh4 el6 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq eL7 (entlast))
(command "ucs" "z" p02 p2)
(command "ARray" eL5 eL6 el7 el8 "" "R" "1" sb (/ di sb))
(command "ucs" "")
(vethangcong)
(setvar "osmode" oldos)
(setvar "clayer" old_layer)
(princ)
)

(defun vethangcong ()
(setq goc01 (polar p ang di))
(setq i2 sb)
(setq ptt goc01)
(while (< i2 (length listbac))
(setq rbc (nth i2 listbac))
(command ".pline")
(command ptt)
(command
(strcat "@0," (rtos (- c (* 2.0 bk))))
(strcat "@" (rtos (- bk nb)) ",0")
"a"
(strcat "@0," (rtos (* 2.0 bk)))
"l"
(strcat "@" (rtos (+ 10 rbc)) ",0")
""
)
(setq ptt1 (polar ptt (/ (* 90 pi) 180) (- c (* 2.0 bk))))
(setq ptt2 (polar ptt1 0 10))
(setq ptt3 (polar ptt2 (/ (* 90 pi) 180) 10))
(command "rectang" ptt ptt2)
(command "hatch" MBTong4 tl4 angh4 "l" "")
(command "change" "l" "" "p" "la" "_hatch" "")
(command ".pline")
(command ptt1)
(command
(strcat "@" (rtos (+ 10 rbc)) ",0")
(strcat "@0," (rtos (* 2.0 bk)))
(strcat "@" (rtos (- bk nb)) ",0")
""
)
(setq ptt (getvar "lastpoint"))
(command "-hatch" ptt3 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq i2 (1+ i2))
)
(setq pocuoi (polar ptt (/ (* 270 pi) 180) (/ (* c 2) 3)))
(setq pocuoi1 (polar pocuoi (/ (* 270 pi) 180) (/ (* c 2) 3)))
(command ".pline" p02 p2 "a" pocuoi "")
(setq noi1 (entlast))
(command "offset" "100" noi1 pocuoi1 "")
(setq noi2 (entlast))
(setq popcuoi (cdr (assoc 10 (reverse (entget noi2)))))
(setq popdau (cdr (assoc 10 (entget noi2))))
(command ".pline")
(command p02)
(command
(strcat "@-200,0")
(strcat "@0,-300")
(list (car popdau) (- (cadr p02)300))
)
(command popdau "")
(command "")
(setq noi3 (entlast))
(command ".pline" pocuoi popcuoi "")
(setq noi4 (entlast))
(command "pedit" noi1 "j" noi1 noi2 noi3 noi4 "" "")
(setq banbt (entlast))
(command "hatch" MBTong1 tl1 angh1 banbt "")
(command "change" "l" "" "p" "la" "_hatch" "")
(command "hatch" MBTong2 tl2 angh2 banbt "")
(command "change" "l" "" "p" "la" "_hatch" "")
(command "line" ptt pocuoi "")
(setq pohatch (polar goc01 0 20))
(command "-hatch" "p" MBTong3 tl3 angh3 pohatch "")
(command "change" "l" "" "p" "la" "_hatch" "")
)


  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#8 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 22 September 2010 - 10:49 AM

Còn cái vẽ thang này đúng ý của bạn

Buồn quá có việc bận nên không offline cùng anh em cadviet được. Thật là tiếc!!!
Ngồi buồn quá dở cái lisp vẽ thang của bác hoành ra sửa lại tí chút cho đúng cấu tạo.
tiện thể port lên đây cho anh em nào cần thì nhậu.
lisp này kết hợp với lisp vẽ lan can sắt của mình thì rất tiện.


(defun c:vtb (/ p c r sb oldos nb bk MBTong1 tl1 angh1 MBTong2 tl2 angh2
MBTong3 tl3 angh3 d oldos di ang p2 p3 p4 dibt pbt1
pbt2 pbt3 el1 el2 el3 ans)
(setvar "cmdecho" 0)
(setq old_layer (getvar "clayer"))
(setq tbl (tblsearch "layer" "_cat"))
(if (= tbl nil) (command "-layer" "n" "_cat" "c" "4" "_cat" ""))
(setq tbl1 (tblsearch "layer" "_hatch"))
(if (= tbl1 nil) (command "-layer" "n" "_hatch" "c" "8" "_hatch" ""))
(setq tbl2 (tblsearch "layer" "_thay"))
(if (= tbl2 nil) (command "-layer" "n" "_thay" "c" "23" "_thay" ""))
(setvar "clayer" "_cat")
(setq nb 20.0 bk 10.0
MBTong1 "ANSI32" tl1 100 angh1 0
MBTong2 "ar-conc" tl2 10 angh2 0
MBTong3 "ANSI31" tl3 200 angh3 0
MBTong4 "ar-sand" tl4 4 angh4 0
p (getpoint "\nVao diem dau tien: ")
c (getdist p "\nVao chieu cao bac: ")
r (getdist p "\nVao chieu rong bac: ")
sb (getint "\nVao so bac: ")
d (getdist "\nVao be day ban thang be tong : ")
oldos (getvar "osmode")
di (* sb (sqrt (+ (* c c) (* r r)) ))
ang (atan (/ c r))
p01 (polar p 0 10)
p02 (polar p01 (/ (* 270 pi) 180) 20)
p03 (polar p02 ang (/ 20 (sin ang)))
p2 (polar p02 ang di)
p22 (polar p2 (/ (* 90 pi) 180) 20)
p222 (polar p22 (/ (* 180 pi) 180) 10)
p3 (polar p03 0 (/ d (sin ang)))
p33 (polar p02 0 (/ d (sin ang)))
p4 (polar p2 (/ (* 3 pi) 2) (/ d (cos ang)))
dibt (/ 10 (cos ang))
pbt1 p02
pbt3 (polar p02 ang (/ (distance p02 p2) sb) )
pbt2 (list (car pbt1) (cadr pbt3) 0)
pbt4 (polar pbt2 (/ (* 90 pi) 180) 10)
)
(setvar "osmode" 0 )
(command ".pline")
(command p)
(repeat sb
(command
(strcat "@0," (rtos (- c (* 2.0 bk))))
(strcat "@" (rtos (- bk nb)) ",0")
"a"
(strcat "@0," (rtos (* 2.0 bk)))
"l"
(strcat "@" (rtos (+ (- nb bk) r)) ",0")
)
)
(command "")
(setq thay (entlast))
(initget "C K")
(setq ans (getkword "\n Ban muon cat qua cau thang hay khong < C / K > :"))
(if (= ans "K")
(progn
(command "pline" p p3 p4 p2 p22 p222 "")
(command "change" "l" "" "p" "la" "_thay" "")
(command "change" thay "" "p" "la" "_thay" "")
)
)
(if (= ans "C")
(progn
(setvar "cmdecho" 0)
(command "line" p p01 "")
(setq el4 (entlast))
(command "pline" p02 p33 p4 p2 "c")
(setq eL (entlast))
(command "hatch" MBTong1 tl1 angh1 eL "")
(command "change" "l" "" "p" "la" "_hatch" "")
(command "hatch" MBTong2 tl2 angh2 eL "")
(command "change" "l" "" "p" "la" "_hatch" "")
(command "pline" pbt1 pbt2 pbt3 "C")
(setq eL1 (entlast))
(command "hatch" MBTong3 tl3 angh3 eL1 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq eL2 (entlast))
(command "line" pbt3 (list (car p) (cadr pbt3) 0) "")
(setq eL3 (entlast))
(command "ucs" "z" p02 p2)
(command "ARray" el1 el2 el3 el4 "" "R" "1" sb (/ di sb))
(command "ucs" "")
(command "-BOUNDARY" pbt4 "")
(setq eL5 (entlast))
(command "rectang" p pbt2)
(setq eL6 (entlast))
(command "hatch" MBTong4 tl4 angh4 eL5 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq eL8 (entlast))
(command "hatch" MBTong4 tl4 angh4 el6 "")
(command "change" "l" "" "p" "la" "_hatch" "")
(setq eL7 (entlast))
(command "ucs" "z" p02 p2)
(command "ARray" eL5 eL6 el7 el8 "" "R" "1" sb (/ di sb))
(command "ucs" "")
)
)
(setvar "osmode" oldos)
(setvar "clayer" old_layer)
(princ)
)


  • 3
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#9 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 22 September 2010 - 11:11 AM

Còn cái vẽ thang này đúng ý của bạn


Mấy cái LISP vẽ cầu thang thật lắm công phu nhưng hiệu quả không cao

Lý do chính nằm ở chỗ mấy cái lệnh của CAD (Copy, divide) không trực quan
CAD luôn luôn bắt người ta đưa ra con số chính xác thay vì giúp người vẽ tính toán trước khi quyết định con số đó.
  • 0

#10 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 22 September 2010 - 11:14 AM

bạn thông cảm,đó là qui định của khàng,bạn làm ơn sửa lại cái hatch solid dùm mình nha.cảm ơn nhiều.

Thế thì bạn bỏ hết mấy dòng lấy giá trị cũ của hatch đi như thế này

(defun c:hh(/ ov vl)
(setvar "cmdecho" 1)
(if (tblsearch "layer" "Hatch")
(setvar "CLAYER" "Hatch")
(command "-layer" "M" "Hatch" "" ) )
(setvar "hpname" "SOLID")
(command "-hatch")
(while (< 0 (getvar "CMDACTIVE"))
(command pause)
)
(princ)
)
Lưu ý là nếu dùng lệnh -hatch thì sẽ khôg hiện hộp thoại hatch nữa,mà thao tác lệnh theo command ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#11 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 22 September 2010 - 12:04 PM

Mấy cái LISP vẽ cầu thang thật lắm công phu nhưng hiệu quả không cao

Lý do chính nằm ở chỗ mấy cái lệnh của CAD (Copy, divide) không trực quan
CAD luôn luôn bắt người ta đưa ra con số chính xác thay vì giúp người vẽ tính toán trước khi quyết định con số đó.

Mình không hiểu ý bạn có thể nói rõ hơn được không để mình còn sửa
  • 0
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#12 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 22 September 2010 - 01:31 PM

Mình không hiểu ý bạn có thể nói rõ hơn được không để mình còn sửa

:(
Đúng là nói cho rõ thì hơi dài dòng thật.

Bắt đầu bằng kết quả sau khi dùng vtb.lsp đi
Sau đi gõ lệnh, theo yêu cầu nhập vài thông số tôi được một mặt cắt của cầu thang trên màn hình khá chi tiết
Thoạt nhìn, rất công phu nhưng sau vài giây hồ hởi thì hàng loạt vấn đề phát sinh.

- Bản vẽ cho ra ở dạng lỡ cỡ (đơn giản thì không đơn giản, chi tiết thì lại không tới)
nếu vẽ đến Vật liệu hoàn thiện thì phải vẽ cả lớp vữa trát trần, vữa trát bậc,...
Thử đo độ dày bậc ngang hoàn thiện là 20, mặt đứng bậc là 10 (điều này chỉ thể hiện 01 trường hợp trong vô vàn trường hợp)
- Nếu cần biến đổi độ dày mặt đá từ 20 thành 25 thì đó cả là một công việc cực nhọc (stretch từng đối tượng), cứ thế biến đổi hình dạng đầu bậc,...

(Từ từ tôi sẽ viết tiếp nhé...)
  • 0

#13 ketxu

ketxu

    Copier - Paster - Editor

  • Moderator
  • PipPipPipPipPipPipPip
  • 5682 Bài viết
Điểm đánh giá: 2605 (tuyệt vời)

Đã gửi 22 September 2010 - 01:43 PM

Thử đo độ dày bậc ngang hoàn thiện là 20, mặt đứng bậc là 10 (điều này chỉ thể hiện 01 trường hợp trong vô vàn trường hợp)
- Nếu cần biến đổi độ dày mặt đá từ 20 thành 25 thì đó cả là một công việc cực nhọc (stretch từng đối tượng), cứ thế biến đổi hình dạng đầu bậc,...

(Từ từ tôi sẽ viết tiếp nhé...)

Mình thấy trong code có đoạn cho phép nhập các thông số này mà..Nói chung là 1 lisp thì cũng khó có thể bao quát tất cả các trường hợp của KTS được,mình phải tùy biến theo ý mình thôi ^^
  • 0

Thành viên nhóm CadMagic.
Mời bạn ghé thăm facebook nhóm - Page viết lisp theo yêu cầu  :
CAD MAGIC


#14 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 22 September 2010 - 01:58 PM

Mình thấy trong code có đoạn cho phép nhập các thông số này mà..Nói chung là 1 lisp thì cũng khó có thể bao quát tất cả các trường hợp của KTS được,mình phải tùy biến theo ý mình thôi ^^


Cho nên, nếu dùng Lisp sau đó phải đi chỉnh sửa thì thà dùng các lệnh cơ bản của CAD để vẽ lại đỡ phiền phức hơn
Nhưng điều đó cũng không thành vấn đề gì.
Vấn đề ở đây là chúng ta cứ chạy theo những gì CAD và thói quen người dùng và giải quyết nó theo lối mòn mà không thử lật ngược và tìm hướng giải quyết khác.
  • 1

#15 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 22 September 2010 - 02:37 PM

Tiếp theo là vẽ cầu thang
-----------
Sau khi tính toán thì sẽ có một vị trí để đặt cầu thang
Khi quyết định được vị trí, đầu óc sẽ tiếp tục cân nhắc một loạt trước khi ra tay vẽ (tính toán mới là việc quan trọng)
Ví dụ: Hình dạng cầu thang (U, L, xoắn hay tự do?)
Dạng bản BTCT, xương cá hay...?
Gỗ, đá hay thép...?
Tiếp theo
Số bậc? bao nhiêu là vừa?
Tuân theo Sinh, lão bệnh tử hay là không?.
...
Sau khi quyết định, thường thì 100% ngươi ta sẽ vẽ MB cầu thang để tiện tính toán số bậc

Như thế, vẽ MB là bước mà ai cũng phải đi qua
Và bây giờ hãy thử xem CAD đã hỗ trợ người vẽ như thế nào?

Tôi có thể miêu tả trình tự như sau:
- Ban đầu bạn sẽ vẽ một đường bao (L, PL, A)
- Sau đó tuỳ theo quyết định bề rộng vế mà bạn sẽ Offset nó.
- Sau đó là chia bậc (Hàng loạt lệnh được áp dụng tại bước này nhưng không hiệu quả)
Nếu kết quả không mong muốn thì sẽ bắt đầu lại từ đường bao

Uống cà phê tí rồi tiếp nhé...:(
  • 0

#16 phamngoctukts

phamngoctukts

    biết lệnh adcenter

  • CADViet Team
  • PipPipPipPipPipPipPip
  • 1107 Bài viết
Điểm đánh giá: 696 (tốt)

Đã gửi 22 September 2010 - 04:26 PM

:(
Đúng là nói cho rõ thì hơi dài dòng thật.

Bắt đầu bằng kết quả sau khi dùng vtb.lsp đi
Sau đi gõ lệnh, theo yêu cầu nhập vài thông số tôi được một mặt cắt của cầu thang trên màn hình khá chi tiết
Thoạt nhìn, rất công phu nhưng sau vài giây hồ hởi thì hàng loạt vấn đề phát sinh.

- Bản vẽ cho ra ở dạng lỡ cỡ (đơn giản thì không đơn giản, chi tiết thì lại không tới)
nếu vẽ đến Vật liệu hoàn thiện thì phải vẽ cả lớp vữa trát trần, vữa trát bậc,...
Thử đo độ dày bậc ngang hoàn thiện là 20, mặt đứng bậc là 10 (điều này chỉ thể hiện 01 trường hợp trong vô vàn trường hợp)
- Nếu cần biến đổi độ dày mặt đá từ 20 thành 25 thì đó cả là một công việc cực nhọc (stretch từng đối tượng), cứ thế biến đổi hình dạng đầu bậc,...

(Từ từ tôi sẽ viết tiếp nhé...)

Đúng là lisp của mình còn nhiều hạn chế. Bạn chắc cũng là người viết lisp để xử lý chi tiết bằng lisp là không đơn giản chút nào. Với cái lisp này thể hiện trong mặt cắt thì tạm ổn còn bổ chi tiết thì không dùng được Cái này mình cũng biết. Thời gian tới sẽ nghiên cứu sâu hơn. Cám ơn bạn đã góp ý.
  • -1
Tất cả vì sự phát triển của diễn đàn ...
Cám ơn đừng nói lời suông mà hãy nhấn Hình đã gửi!

#17 trinhvqh

trinhvqh

    biết lệnh block

  • Members
  • PipPipPipPipPipPip
  • 408 Bài viết
Điểm đánh giá: 222 (khá)

Đã gửi 22 September 2010 - 04:42 PM

Đúng là lisp của mình còn nhiều hạn chế. Bạn chắc cũng là người viết lisp để xử lý chi tiết bằng lisp là không đơn giản chút nào. Với cái lisp này thể hiện trong mặt cắt thì tạm ổn còn bổ chi tiết thì không dùng được Cái này mình cũng biết. Thời gian tới sẽ nghiên cứu sâu hơn. Cám ơn bạn đã góp ý.


Tôi không rành về lisp đâu. Nhưng trót "phản biện" về lisp nên vô tình "đắc tội" với một số cao thủ :s_big
Chúc bạn vui!
Hy vọng được tiếp tục phản biện.
  • 0

#18 duy782006

duy782006

    PHẠM QUỐC DUY

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

Đã gửi 23 September 2010 - 02:49 PM

lisp của bạn sử dụng được nhưng mình vẫn chưa hài lòng.mình muốn khi sử dụng lệnh h và hh thì layer hatch sẽ hiện hành trước rồi mới thực hiện lệnh.tại vì khi sử dụng lệnh của bạn dlick vào hatch thì tab hatch muc swatch nó là màu của layer đang hiện hành trước đó chứ ko phải by layer của layer hatch nên mình ko thể sử dụng được.Rất mong bạn sửa lại dùm (vì đó là quy định của cty mình).Xin chân thành cảm ơn bạn.

Chả hiểu làm sdao cho bạn hài lòng nửa vì 2 lisp trên điều đã chuyển layer hatch về hiện hành thực hiện xong mới chuyển về layer cũ mà.
  • 0

Cứ ngỡ trần gian là cõi thật.Cho nên tất bật đến bây giờ.
Tạo hộp thoại bằng lisp My blog QUY ĐỊNH ĐẶT TÊN TOPIC TRONG CHUYÊN MỤC LISPD http://ktsduy.wordpress.com/
Để cám ơn chỉ cần nhấn rep_up.png
(Là nhấn vào nút đó phía bài viết của người ta í chứ đừng có nhè cái hình này mà nhấn miết đi nha :-D


#19 ad.pham2304

ad.pham2304

    biết zoom

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

Đã gửi 28 May 2014 - 10:08 AM

Bạn có thể dùng cái vẽ mặt vắt thang này do mình viết.

BÁC CHO EM XIN CÁI LÍP VỀ THANG CỦA BÁC NHÉ  GỬI VÀO MAIL HỘ EM ad.pham2304@gmail.com CẢM ƠN BÁC NHIỀU LẮM


  • 0