Đến nội dung


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

Viết lisp theo yêu cầu [phần 2]


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

#1141 mCuongs

mCuongs

    biết zoom

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

Đã gửi 28 April 2010 - 11:15 PM

LISP phép toán cộng trừ nhân chia và trung bình cộng : free lisp from CadViet.

kết quả ghi ra màn hình CAD : http://www.cadviet.c...o...ost&p=65044
kết quả ghi vào 1 text có sẵn : http://www.cadviet.c...o...ost&p=65338

Nếu b dùng lisp của m post lên, b sẽ thấy swj khác biệt, m muốn đc như lisp kia, có nghĩa là hiện ra hộp thoại ( + - x :=), như thế sẽ tiệ hơn rất nhiều, khi mình nhập xong phép tính và chọn dấu (=) thì 1 hộp thoại khác hiện ra, cho phép b chọn số chữ số sau dấu phẩy, layer, màu sắc của kết quả, và cũng cho phép b ghi kết quả theo 2 cách, 1 là update vào text đã có sẵn, 2 là tạo mới và chèn vào màn hình, mong b có thể giúp m :cheers:
  • 0

#1142 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 29 April 2010 - 08:37 AM

Cảm ơn Tue_NV đã quan tâm.
bạn có thể xem lại giúp mình được không?
Ý thứ 1: Ý mình là thêm 1 cột tại vị trí thứ 3 (khi thống kê kèm theo hình vẽ minh hoạ) -> ý này mình nói không rõ mong Tue_NV bỏ qua
Ý thứ 2: Tue_NV xem lại giúp khi số lượng <10 không có số 0 nằm trước (mình đã thử nhiều lần)
Một lần nữa làm phiền bạn. Cảm ơn bạn nhiều lắm

Chào bạn thuthuypt77
Bạn thử Lisp mà Tue_NV đã chỉnh lại thử nhé :
http://www.cadviet.c...es/2/blkqty.lsp

@damvinhduy : Lisp Tue_NV đã chỉnh lại cho bạn. Bạn chạy lại thử nhé:
(defun c:dstt(/ ss delta ob chuoi chdau chcuoi)
(vl-load-com)
;; copyright by Tue_NV
(setq ss (ssget (list(cons 0 "*TEXT") (cons 1 "*##"))) i -1)
(setq delta (getint "\n so tang giam :"))
(while (setq ent (ssname ss (setq i (1+ i))))
(setq ob (vlax-ename->vla-object ent))
(setq chuoi (vlax-get ob 'textstring))
;(setq chdau "T10A030")
(setq chdau (substr chuoi 1 (- (strlen chuoi) 2)))
(setq chcuoi (atoi (substr chuoi (1+ (strlen chdau)) (strlen chuoi))))
(if (and (>= (+ chcuoi delta) 0) (<= (+ chcuoi delta) 9))
(vlax-put ob 'textstring (strcat chdau "0" (itoa (+ chcuoi delta))))
)
(if (> (+ chcuoi delta) 9)
(vlax-put ob 'textstring (strcat chdau (itoa (+ chcuoi delta))))
)
)
(princ)
)

  • 1

#1143 thuthuypt77

thuthuypt77

    biết pan

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

Đã gửi 29 April 2010 - 09:09 AM

Chào bạn thuthuypt77
Bạn thử Lisp mà Tue_NV đã chỉnh lại thử nhé :
http://www.cadviet.c...es/2/blkqty.lsp


Tue_NV xem lại giúp
1. khi thống kê kèm theo hình vẽ minh hoạ: chưa thấy thể hiện được
2. số lượng <10 số 0 nằm trước (VD: 02, 03...): hình như Tue_NV nhằm (số 0 lại nằm cột STT)
Phiền bạn giúp mình tiếp nhé. Cảm ơn bạn
  • 0

#1144 trinhvqh

trinhvqh

    biết lệnh block

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

Đã gửi 29 April 2010 - 09:26 AM

Tue_NV xem lại giúp
1. khi thống kê kèm theo hình vẽ minh hoạ: chưa thấy thể hiện được
2. số lượng <10 số 0 nằm trước (VD: 02, 03...): hình như Tue_NV nhằm (số 0 lại nằm cột STT)
Phiền bạn giúp mình tiếp nhé. Cảm ơn bạn


Lại thêm một người "Được voi đòi 02 Bà Trưng"
Vụ này hình như các cao thủ: một là muốn "giữ bí mật" hai là "ngoài khả năng"

Thôi đành chịu khó mà ngồi Insert Block vào Table đi bạn
Và nhớ Edit Text <10 luôn cho nó trọn vẹn
  • 0

#1145 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 29 April 2010 - 09:38 AM

Tue_NV xem lại giúp
1. khi thống kê kèm theo hình vẽ minh hoạ: chưa thấy thể hiện được
2. số lượng <10 số 0 nằm trước (VD: 02, 03...): hình như Tue_NV nhằm (số 0 lại nằm cột STT)
Phiền bạn giúp mình tiếp nhé. Cảm ơn bạn

Sorry. Tue_NV nhầm ở cột STT -> Chỉnh lại cho bạn đây :
http://www.cadviet.c...s/2/blkqty1.lsp
Còn hình vẽ minh hoạ thì mình còn .. nghiên cứu tiếp :cheers:
  • 0

#1146 trinhvqh

trinhvqh

    biết lệnh block

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

Đã gửi 29 April 2010 - 09:55 AM

Còn hình vẽ minh hoạ thì mình còn .. nghiên cứu tiếp :cheers:


Vụ chèn hình này đúng là "khó ăn" đây
Ngay cả ACA cũng không giải quyết rốt ráo vụ này mà vẫn phải chèn một cách thủ công với Graphic Properties
  • 0

#1147 thuthuypt77

thuthuypt77

    biết pan

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

Đã gửi 29 April 2010 - 10:00 AM

Sorry. Tue_NV nhầm ở cột STT -> Chỉnh lại cho bạn đây :
http://www.cadviet.c...s/2/blkqty1.lsp
Còn hình vẽ minh hoạ thì mình còn .. nghiên cứu tiếp :cheers:

Cảm ơn Tue_NV, chạy tốt rồi
Còn hình vẽ minh hoạ thì mình còn .. nghiên cứu tiếp: Chờ tin bạn
  • 0

#1148 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 29 April 2010 - 11:13 AM

Vụ chèn hình này đúng là "khó ăn" đây
Ngay cả ACA cũng không giải quyết rốt ráo vụ này mà vẫn phải chèn một cách thủ công với Graphic Properties

Vụ chèn hình là “chuyện nhỏ” cũng không phải "giữ bí mật" nhưng vì muốn giải quyết rốt ráo nên chậm Update cho anh em.
Nhưng nay thấy "AKA buông súng" nên Post lên anh em sài thử!

- cột số lượng nếu <10 thì thêm số 0 vào trước ví dụ: 02
thọat nghe có vẽ có lý, nhưng t/hợp cột số lượng có giá trị hàng trăm (hàng ngàn) thì các số khác cũng phải biểu thị cùng format.
VD : 001 002 010 … với hàng ngàn còn rối mắt hơn.
Để giải quyết t/hợp này chỉ cần căn lề phải các số là hợp lý.

- Sort column  :
mặc định LISP sort cột Tên theo mẫu tự ABC tên của BLOCK
việc sort theo cột số lượng là t/hợp ít khi dùng nên bỏ qua (đôi khi vẫn sử dụng) :cheers:
các t/hợp khác cần phải viết thêm hộp thoại cho USER chọn lựa → Hình đã gửi

Sau  02 bà rồi sẽ là cái này :Hình đã gửi

Bổ sung tùy chọn : nhập ký hiệu Block
Code :
(defun c:BlkQty (/ blk_id blk_len blk_name blks cur_var ent h header_lsp height i
ins j len0 lst_blk msp pt row ss str tblobj width width1 width2 x y)
;; By : Gia Bach, gia_bach @ www.CadViet.com ;;
(defun TxtWidth (val h msp / txt minp maxp)
(setq txt (vla-AddText msp val (vlax-3d-point '(0 0 0)) h))
(vla-getBoundingBox txt 'minp 'maxp )
(vla-Erase txt)
(-(car(vlax-safearray->list maxp))(car(vlax-safearray->list minp))) )

(defun GetOrCreateTableStyle (tbl_name / name namelst objtblsty objtblstydic tablst txtsty)
(setq objTblStyDic (vla-item (vla-get-dictionaries *adoc) "ACAD_TABLESTYLE") )
(foreach itm (vlax-for itm objTblStyDic
(setq tabLst (append tabLst (list itm))))
(if (not
(vl-catch-all-error-p
(setq name (vl-catch-all-apply 'vla-get-Name (list itm)))))
(setq nameLst (append nameLst (list name))) ) )
(if (not (vl-position tbl_name nameLst))
(vla-addobject objTblStyDic tbl_name "AcDbTableStyle"))
(setq objTblSty (vla-item objTblStyDic tbl_name)
TxtSty (variant-value (vla-getvariable *adoc "TextStyle")))
(mapcar '(lambda (x)(vla-settextstyle objTblSty x TxtSty))
(list acTitleRow acHeaderRow acDataRow) )
(vla-setvariable *adoc "CTableStyle" tbl_name) )

(defun GetObjectID (obj)
(if (vl-string-search "64" (getenv "PROCESSOR_ARCHITECTURE"))
(vlax-invoke-method
(setq Utility
(cond
(Utility)
((vla-get-Utility *adoc))))
'GetObjectIdString obj :vlax-false )
(vla-get-Objectid obj)))
;main
(if (setq ss (ssget (list (cons 0 "INSERT"))))
(progn
(vl-load-com)
(setq i -1 len0 8)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq blk_name (vla-get-name (vlax-Ename->Vla-Object ent)))
(if (> (setq blk_len (strlen blk_name)) len0)
(setq str blk_name len0 blk_len) )
(if (not (assoc blk_name lst_blk))
(setq lst_blk (cons (cons blk_name 1) lst_blk))
(setq lst_blk (subst (cons blk_name (1+ (cdr (assoc blk_name lst_blk))))
(assoc blk_name lst_blk) lst_blk))) )
(setq lst_blk (vl-sort lst_blk '(lambda (x y) (< (car x) (car y)) ) ))
(setq cur_var (mapcar 'getvar '("DYNMODE" "DYNPROMPT")))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") '(1 1))
(initget "Yes No")
(setq ins (getkword "\nChen ki hieu Block [Yes/No ] : ") )
(or ins (setq ins "Yes"))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") cur_var)
(or *h* (setq *h* (* (getvar "dimtxt")(getvar "dimscale"))))
(initget 6)
(setq h (getreal (strcat "\nChieu cao chu <" (rtos *h*) "> :")))
(if h (setq *h* h) (setq h *h*) )
(setq *adoc (vla-get-ActiveDocument (vlax-get-acad-object))
msp (vla-get-modelspace *adoc)
blks (vla-get-blocks *adoc))
(setq width1 (* 2 (TxtWidth "STT" h msp))
width (* 2 (TxtWidth "So luong" h msp))
height (* 2 h))
(if str
(setq width2 (* 1.5 (TxtWidth (strcase str) h msp)))
(setq width2 width))
(if (> h 3)
(setq width (* (fix (/ width 10))10)
width1 (* (fix (/ width1 10))10)
width2 (* (fix (/ width2 10))10)
height (* (fix (/ height 5))5)))
(GetOrCreateTableStyle "CadViet")
(setq pt (getpoint "\nDiem dat Bang :")
TblObj (vla-addtable msp (vlax-3d-point pt) (+ (length lst_blk) 2) 5 height width))
(vla-put-regeneratetablesuppressed TblObj :vlax-true)
(vla-SetColumnWidth TblObj 0 width1)
(vla-SetColumnWidth TblObj 1 width2)
(vla-put-vertcellmargin TblObj (* 0.75 h))
(vla-put-horzcellmargin TblObj (* 0.75 h))
(mapcar '(lambda (x)(vla-setTextHeight TblObj x h))
(list acTitleRow acHeaderRow acDataRow) )
(mapcar '(lambda (x)(vla-setAlignment TblObj x 2))
(list acTitleRow acHeaderRow acDataRow))
(vl-catch-all-error-p (vl-catch-all-apply (function(lambda () (vla-MergeCells TblObj 0 0 0 3)) )))
(vla-setText TblObj 0 0 "Bang thong ke")
(setq j -1 header_lsp (list "STT" "Ten" "Don vi" "So luong" "Ky hieu"))
(repeat (length header_lsp)
(vla-setText TblObj 1 (setq j (1+ j)) (nth j header_lsp)))
(setq row 2 i 1)
(foreach pt lst_blk
(setq blk_name (car pt) j -1)
(mapcar '(lambda (x)(vla-setText TblObj row (setq j (1+ j)) x))
(list i blk_name "cai" (cdr pt)))
(if (= ins "Yes")
(vla-SetBlockTableRecordId TblObj row 4 (GetObjectID (vla-item blks blk_name)) :vlax-true))
(vla-SetCellAlignment TblObj row 1 7)
(vla-SetCellAlignment TblObj row 3 9)
(setq row (1+ row) i (1+ i)) )
(vla-put-regeneratetablesuppressed TblObj :vlax-false)
(vlax-release-object TblObj) ) )
(princ))

Bài viết đã được chỉnh sửa nội dung bởi gia_bach: 17 September 2010 - 08:19 AM

  • 4

#1149 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 29 April 2010 - 11:25 AM

Vụ chèn hình là “chuyện nhỏ” cũng không phải "giữ bí mật" nhưng vì muốn giải quyết rốt ráo nên chậm Update cho anh em.
Nhưng nay thấy "AKA buông súng" nên Post lên anh em sài thử!

...........

Sau  02 bà rồi sẽ là cái này :Hình đã gửi

Bổ sung tùy chọn : nhập ký hiệu Block
Code :

(defun c:BlkQty (/ blk_id blk_len blk_name cur_var ent h height i ins len0 lst_blk msp pt row 
ss str tblobj width width1 width2 x y)
;; By : Gia Bach, gia_bach @ www.CadViet.com ;;
(defun TxtWidth (val h msp / txt minp maxp)
(setq txt (vla-AddText msp val (vlax-3d-point '(0 0 0)) h))
(vla-getBoundingBox txt 'minp 'maxp )
(vla-Erase txt)
(-(car(vlax-safearray->list maxp))(car(vlax-safearray->list minp))) )

(defun GetOrCreateTableStyle (tbl_name / name namelst objtblsty objtblstydic tablst txtsty)
(setq objTblStyDic (vla-item (vla-get-dictionaries *adoc) "ACAD_TABLESTYLE") )
(foreach itm (vlax-for itm objTblStyDic
(setq tabLst (append tabLst (list itm))))
(if (not
(vl-catch-all-error-p
(setq name (vl-catch-all-apply 'vla-get-Name (list itm)))))
(setq nameLst (append nameLst (list name))) ) )
(if (not (vl-position tbl_name nameLst))
(vla-addobject objTblStyDic tbl_name "AcDbTableStyle"))
(setq objTblSty (vla-item objTblStyDic tbl_name)
TxtSty (variant-value (vla-getvariable *adoc "TextStyle")))
(vla-settextstyle objTblSty acTitleRow TxtSty)
(vla-settextstyle objTblSty acHeaderRow TxtSty)
(vla-settextstyle objTblSty acDataRow TxtSty)
(vla-setvariable *adoc "CTableStyle" tbl_name) )
;main
(if (setq ss (ssget (list (cons 0 "INSERT"))))
(progn
(vl-load-com)
(setq i -1 len0 8)
(while (setq ent (ssname ss (setq i (1+ i))))
(setq blk_name (vla-get-name (vlax-Ename->Vla-Object ent)))
(if (> (setq blk_len (strlen blk_name)) len0)
(setq str blk_name len0 blk_len) )
(if (not (assoc blk_name lst_blk))
(setq lst_blk (cons (cons blk_name 1) lst_blk))
(setq lst_blk (subst (cons blk_name (1+ (cdr (assoc blk_name lst_blk))))
(assoc blk_name lst_blk) lst_blk))) )
(setq lst_blk (vl-sort lst_blk '(lambda (x y) (< (car x) (car y)) ) ))
(setq cur_var (mapcar 'getvar '("DYNMODE" "DYNPROMPT")))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") '(1 1))
(initget "Yes No")
(setq ins (getkword "\nChen ki hieu Block [Yes/No ] : ") )
(or ins (setq ins "Yes"))
(mapcar 'setvar '("DYNMODE" "DYNPROMPT") cur_var)
(or *h* (setq *h* (* (getvar "dimtxt")(getvar "dimscale"))))
(initget 6)
(setq h (getreal (strcat "\nChieu cao chu <" (rtos *h*) "> :")))
(if h (setq *h* h) (setq h *h*) )
(setq *adoc (vla-get-ActiveDocument (vlax-get-acad-object))
msp (vla-get-modelspace *adoc))
(setq width1 (* 2 (TxtWidth "STT" h msp))
width (* 2 (TxtWidth "So luong" h msp))
height (* 2 h))
(if str
(setq width2 (* 1.5 (TxtWidth (strcase str) h msp)))
(setq width2 width))
(if (> h 3)
(setq width (* (fix (/ width 10))10)
width1 (* (fix (/ width1 10))10)
width2 (* (fix (/ width2 10))10)
height (* (fix (/ height 5))5)))
(GetOrCreateTableStyle "CadViet")
(setq pt (getpoint "\nDiem dat Bang :")
TblObj (vla-addtable msp (vlax-3d-point pt) (+ (length lst_blk) 2) 5 height width))
(vla-put-regeneratetablesuppressed TblObj :vlax-true)
(vla-SetColumnWidth TblObj 0 width1)
(vla-SetColumnWidth TblObj 1 width2)
(vla-put-vertcellmargin TblObj (* 0.75 h))
(vla-put-horzcellmargin TblObj (* 0.75 h))
(mapcar '(lambda (x)(vla-setTextHeight TblObj x h))
(list acTitleRow acHeaderRow acDataRow) )
(mapcar '(lambda (x)(vla-setAlignment TblObj x 2))
(list acTitleRow acHeaderRow acDataRow))
(vla-MergeCells TblObj 0 0 0 3)
(vla-setText TblObj 0 0 "Bang thong ke")
(mapcar '(lambda (x y)(vla-setText TblObj 1 x y))
(list 0 1 2 3 4)
(list "STT" "Ten" "Don vi" "So luong" "Ky hieu"))
(setq row 2 i 1)
(foreach pt lst_blk
(setq blk_name (car pt) )
(mapcar '(lambda (x y)(vla-setText TblObj row x y))
(list 0 1 2 3)
(list i blk_name "cai" (cdr pt)))
(if (= ins "Yes")
(vla-SetBlockTableRecordId TblObj row 4 (vla-get-objectID (vla-item (vla-get-blocks *adoc) blk_name))
:vlax-true))
(vla-SetCellAlignment TblObj row 1 7)
(vla-SetCellAlignment TblObj row 3 9)
(setq row (1+ row) i (1+ i)) )
(vla-put-regeneratetablesuppressed TblObj :vlax-false)
(vlax-release-object TblObj) ) )
(princ))

Code quá tuyệt, gãi đúng ngay chổ ngứa :cheers: . Tick thanks không chưa đã, phải nói lời cảm ơn mới được.
Tue_NV chân thành cảm ơn anh gia bach thật nhiều
  • 0

#1150 trinhvqh

trinhvqh

    biết lệnh block

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

Đã gửi 29 April 2010 - 11:45 AM

Vụ chèn hình là “chuyện nhỏ” cũng không phải "giữ bí mật" nhưng vì muốn giải quyết rốt ráo nên chậm Update cho anh em.
Nhưng nay thấy "AKA buông súng" nên Post lên anh em sài thử!

- cột số lượng nếu <10 thì thêm số 0 vào trước ví dụ: 02
thọat nghe có vẽ có lý, nhưng t/hợp cột số lượng có giá trị hàng trăm (hàng ngàn) thì các số khác cũng phải biểu thị cùng format.
VD : 001 002 010 … với hàng ngàn còn rối mắt hơn.
Để giải quyết t/hợp này chỉ cần căn lề phải các số là hợp lý.

- Sort column  :
mặc định LISP sort cột Tên theo mẫu tự ABC tên của BLOCK
việc sort theo cột số lượng là t/hợp ít khi dùng nên bỏ qua (đôi khi vẫn sử dụng) :cry:
các t/hợp khác cần phải viết thêm hộp thoại cho USER chọn lựa → Hình đã gửi


Thật tiếc là chưa Test được Sản phẩm mới của gia_bach
(Chạy trên nền Win Vista64 không hiểu sao nó lại lố bịch)

Rất vui vì đây là lần đầu tiên hiếm hoi bác gia_bach tỏ ra tự tin với cái chuyện "rốt ráo"
Nhưng chắc chắn rằng:
29/04 vẫn chưa phải là ngày giải phóng
Và cho dù "ACA buông súng" tạo hòa bình thì vẫn chưa thể "hòa hợp dân tộc" được.
:cheers:

P/s: Hy vọng chiều nay được thưởng thức sản phẩm của gia_bach trên nền win32
Cảm ơn gia_bach rất nhiều!
Autolisp trở nên huyền ảo hơn nhờ những người như vậy!

Đọc lại mới thấy gia_bach dùng từ "ACA buông súng" thật đa nghĩa :cheers: nhưng từ từ sẽ bàn sau

Về cột số lượng, giải thích của gia_bach không thuyết phục
Do ý nghĩ Format đồng nhất nên mới có sự rối mắt khi số lên đến hàng nghìn
Đối với số: người ta chỉ cần thêm 0 vào các số từ 1-9 mà thôi theo quy tắc của văn bản
(Chuyện cũng tương tự như ghi ngày tháng với tháng 1,2 thì cần phải thêm 0. Với tháng 3 thì không cần vì không có tháng 13)
Như vậy, ở cột số lượng phải thỏa mãn 02 điều kiện:
- Nếu từ 1-9 phải thêm 0 vào đắng trước
- Khi sắp xếp phải sắp xếp theo số

Về việc Sort: Đúng là đòi hỏi quá đáng so với Autolisp nên gia_bach cứ chủ động áp đặt luật chơi
:cry:
  • 0

#1151 trinhvqh

trinhvqh

    biết lệnh block

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

Đã gửi 29 April 2010 - 02:47 PM

Lisp chạy ổn với Win32
Khoái nhất là chèn Ký hiệu Block đảm bảo màu sắc
ACA thừa nhận thua Lisp của gia_bach vụ chèn Ký hiệu này rồi.

Theo ý của gia_bach sau cái vụ 02 bà là có thêm 02 cột Đơn giá và Thành tiền, Tổng thành tiền
Nhưng nếu làm đến giai đoạn này thì sẽ lòi ra những lố bịch ngay

Khi đó, quay về lại thấy ACA không chèn được Ký hiệu tự động cũng có lý do của nó :cheers:
  • 0

#1152 gia_bach

gia_bach

    biết lệnh adcenter

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

Đã gửi 29 April 2010 - 03:31 PM

Nếu b dùng lisp của m post lên, b sẽ thấy swj khác biệt, m muốn đc như lisp kia, có nghĩa là hiện ra hộp thoại ( + - x :=), như thế sẽ tiệ hơn rất nhiều, khi mình nhập xong phép tính và chọn dấu (=) thì 1 hộp thoại khác hiện ra, cho phép b chọn số chữ số sau dấu phẩy, layer, màu sắc của kết quả, và cũng cho phép b ghi kết quả theo 2 cách, 1 là update vào text đã có sẵn, 2 là tạo mới và chèn vào màn hình, mong b có thể giúp m :cheers:

Đây là ShareWare của 1 thằng Phi viết trên font tiếng nhật. http://www.offshorecad.com.ph/eng/
giá là 200 yên ~ 40K VNĐ
bạn nên Add font Japanese để xem.
Về mặt lập trình thì không có gì khó cái chính là có anh em nào hứng thú không thôi.
Anh em nào muốn thiết kế giao diện trong LISP (dialog) thì đây là đề tài hay.

Hình đã gửi
  • 0

#1153 truongthanh

truongthanh

    biết lệnh text

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

Đã gửi 29 April 2010 - 07:54 PM

Mình nghĩ cad thuần tuý kg giúp đc vđ này đâu. Vđ này muốn làm đc phải có lệnh tìm đg bao hữu hiệu hơn lệnh hiện nay do cad cung cấp. Khi tìm đc hai đg bao (của đg hiện trạng và đg qui hoạch) mới tìm đc phần giao của chúng. Bạn nên tìm giải pháp khác.

cảm ơn các bạn đã quan tâm!vấn đề này mình đã giải quyết được dễ dàng bằng CIVIL 2010!
Thanks TUE_NV và bác GIA_BACH rất nhiều!
  • 0

#1154 ngotheanh

ngotheanh

    biết vẽ circle

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

Đã gửi 30 April 2010 - 10:00 AM

em muốn viết một lisp để tạo các layer nhưng em chỉ tạo được các layer có đường liền chứ không biết tạo các layer có đường nét đứt cũng như các đường tâm,...các cao thủ xin chỉ cho em nhé!thanks
  • 0

#1155 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 01 May 2010 - 10:01 AM

em muốn viết một lisp để tạo các layer nhưng em chỉ tạo được các layer có đường liền chứ không biết tạo các layer có đường nét đứt cũng như các đường tâm,...các cao thủ xin chỉ cho em nhé!thanks

Chào ngotheanh
Trước hết bạn kiểm tra loại đường mà bạn định gán vào Layer đã được CAD load vào hay chưa? Nếu loại đường chưa được CAD load vào thì bạn sử dụng mã code sau để Load vào.
Ví dụ : Bạn kiểm tra loại đường CENTER đã được CAD load vào hay chưa? Nếu chưa thì Load vào
(if (not (tblsearch "LTYPE" "CENTER")) (Command "linetype" "L" "CENTER" "acad.lin" ""))
Sau đó gán loại đường Center vào Layer CADVIET
(Command "Layer" "N" "CADVIET" "LT" "CENTER" "CADVIET" "")
:cheers:
  • 0

#1156 mCuongs

mCuongs

    biết zoom

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

Đã gửi 01 May 2010 - 10:18 AM

E có 1 cái lisp kiếm đc của bọn nước ngoài,lisp dùng để thực hiện các phép toán cộng trừ nhân chia, e thấy rất hay nhưng khổ nỗi lại bị bản quyền, mã hóa file lisp và nếu ko mua thì sẽ bị lỗi font chữ và sẽ bị tính sai kết quả, ai có thể viết lại lisp này hộ e không?
http://www.cadviet.c...lcalculator.rar
Tên lệnh là : SD_2704

Bác nào rỗi giúp e cái vụ này cái nhỉ?
  • 0

#1157 ngotheanh

ngotheanh

    biết vẽ circle

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

Đã gửi 01 May 2010 - 10:28 PM

Chào ngotheanh
Trước hết bạn kiểm tra loại đường mà bạn định gán vào Layer đã được CAD load vào hay chưa? Nếu loại đường chưa được CAD load vào thì bạn sử dụng mã code sau để Load vào.
Ví dụ : Bạn kiểm tra loại đường CENTER đã được CAD load vào hay chưa? Nếu chưa thì Load vào

(if (not (tblsearch "LTYPE" "CENTER")) (Command "linetype" "L" "CENTER" "acad.lin" ""))
Sau đó gán loại đường Center vào Layer CADVIET
(Command "Layer" "N" "CADVIET" "LT" "CENTER" "CADVIET" "")
:cheers:

Được rồi cảm ơn bác nhiều!
à cho em hỏi luôn là nếu muốn gán màu cho một layer thì gán như thế nào, vì em tạo lisp như của bác thì nó chỉ có toàn màu trắng thôi!
  • 0

#1158 Tue_NV

Tue_NV

    KS Võ Quang Tuệ

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

Đã gửi 02 May 2010 - 03:53 PM

Được rồi cảm ơn bác nhiều!
à cho em hỏi luôn là nếu muốn gán màu cho một layer thì gán như thế nào, vì em tạo lisp như của bác thì nó chỉ có toàn màu trắng thôi!

Bạn thử đoạn này :
(if (not (tblsearch "LTYPE" "CENTER")) (Command "linetype" "L" "CENTER" "acad.lin" ""))
(Command "Layer" "N" "CADVIET" "LT" "CENTER" "CADVIET" "C" "2" "CADVIET" "")

---> Gán màu số 2 (màu vàng) và đường CENTER cho Layer CADVIET
  • 0

#1159 damvinhduy

damvinhduy

    biết vẽ line

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

Đã gửi 02 May 2010 - 05:14 PM

load vào báo sucessful nhưng khi nhập lệnh dstt thi báo Unknown command "DSTT". Press F1 for help. Trong lệnh trên nếu thay T10A030 bằng một text khác bất kỳ có thể thay đổi kiểu TABCDEF, trong đó EF là kiểu ký tự số, TABCD có thể là chữ hoặc số thì phải làm sao. Mình chỉ cần 2 con số cuối của text thay đổi thôi còn các ký tự trước đó không quan tâm là gì. Cảm ơn Tue_NV

Tue_NV không thể giúp mình với lisp này được à. Hixhix
  • 0

#1160 lienha20042000

lienha20042000

    Chưa sử dụng CAD

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

Đã gửi 02 May 2010 - 05:48 PM


bạn Tue_NV có thể giúp mình viết một lisp chạy trên cad 2008 để chuyển các đối lượng có tỉ lệ khác nhau về tỉ lệ hiện thời trọn trong layout ở cad 2008 được không?
Mình sẽ nói cụ thể một chút nhé: Trường hợp đơn giản nhất ví dụ trong layout mình đang vẽ các text, dim ở tỉ lệ 1:20 (Anotative=yes, Anotative scale =1:20) giờ mình muốn chuyển về tỉ lệ 1:30 (Anotative=yes, Anotative scale =1:30) để cho dim và text phù hợp với khung nhìn mới trong layout (khi chọn Anotative scale ở layout la 1:30). Nếu chuyển bằng tay các đối tượng text và dim (chọn các đối lưọng rồi chọn lại tỉ lệ anotative scale) thì lâu và các đối tượng đó đều vẫn còn cái bóng của tỉ lệ cũ (khi mình chỉ đúp vào đối tượng). Trường hợp tổng quát thì làm cho các đối tượng được chuyển ở các tỉ lệ khác nhau.

Lisp đó làm sao có thể quét các đối tượng cần chuyển và vừa chuyển được các đối tượng về tỉ lệ X (chỉ số Anotative scale =X) vừa làm cho các bóng đối tưọng mất đi. Giống như khi mình vẽ ban đầu các đối tượng đó với tỉ lệ X
  • 0