Đến nội dung


Hình ảnh
- - - - -

Cho mình hỏi về lisp này với !


  • Please log in to reply
9 replies to this topic

#1 duyhung

duyhung

    biết vẽ rectang

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

Đã gửi 05 March 2011 - 04:06 PM

Lisp chuyển tất cả các đối tượng trong bản vẽ 1 màu là lisp colorx.
Điều mình thắc mắc là khi nó chuyển thì tất cả các text có chữ tiếng việt đều bị lỗi phông.
http://www.cadviet.c...showtopic=27683
Có khắc phục được lỗi này không vậy các bác.
  • 0
Song va chien dau!

#2 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 05 March 2011 - 04:20 PM

Mình chưa thấy trong code có đoạn nào làm ảnh hưởng đến Text TV.Code của người khác nên đọc hơi rối ^^ Hay bạn thử qua bên này dùng thử cái này, rồi có gì mình fix tiếp theo ý bạn ^^
Clean
  • 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


#3 duyhung

duyhung

    biết vẽ rectang

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

Đã gửi 05 March 2011 - 05:36 PM

Mình chưa thấy trong code có đoạn nào làm ảnh hưởng đến Text TV.Code của người khác nên đọc hơi rối ^^ Hay bạn thử qua bên này dùng thử cái này, rồi có gì mình fix tiếp theo ý bạn ^^
Clean

Thanks bạn ketxu 2 lisp kết hợp gần như hoàn hảo
Mỗi tội còn vấn đề trong block thì vẫn chưa chuyển sang màu 8. text trong block att và các hatch trong block cũng chưa chuyển.
  • 0
Song va chien dau!

#4 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 05 March 2011 - 10:36 PM

Bạn gửi file kết quả sau khi chạy Lisp nên để mọi người xem nào ^^
  • 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


#5 duyhung

duyhung

    biết vẽ rectang

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

Đã gửi 07 March 2011 - 08:55 AM

Chào buổi sáng cả nhà.
Đây là file kết quả mà đã dùng 2 lisp trên nhưng vẫn còn 2 đối tượng là block có hatch và text trong block att là chưa chuyển sang màu 8.
Vấn đề block hình như mình tìm ra được nhưng block att thì chưa, :)
Mọi người test thử nhé
http://www.cadviet.c...es/3/test_9.dwg
  • 0
Song va chien dau!

#6 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 March 2011 - 09:34 PM

Chào bạn duyhung.Mình vừa đi làm về ^^. Dạo này đi làm k onl đc ^^.
Mình fix bên dưới, bạn test thử xem sao. Code k ưng ý lắm, n mà xơi đc ^^

;free lisp from cadviet.com @ ketxu
;updated 7/3 : attblock
(defun c:clear()
(vl-load-com)
(command "undo" "be")
(setq nla "Architech")
(if (not (tblsearch "layer" nla))(command "layer" "n" nla "c" "8" nla "lt" "continuous" nla ""))
(setvar "clayer" nla)
(command "change" (ssget "X") "" "p" "la" nla "c" "8" "")
(if (ssget "x" '((0 . "INSERT")(66 . 1)))
(progn
(setq adoc (vla-get-activedocument (vlax-get-acad-object))
ss (vla-get-activeselectionset adoc)
)
(vlax-for block (vla-get-blocks adoc)
(if (not (wcmatch (strcase (vla-get-name block) t) "*_space*"))
(vlax-for ent block
(progn
(vla-put-color ent "8")
(vla-put-layer ent "Architech")
)
)
)
)
(vlax-for attblock ss
(setq atts (vlax-invoke attblock 'getattributes))
(foreach att atts
(vla-put-color att 8)
(vla-put-layer att "Architech")
)
)
);end progn
);end if
(acet-sysvar-set (list "dimclrt" 256 "dimclre" 256 "dimclrd" 256 "cmdecho" 0 "INSUNITS" 4 "INSUNITSDEFSOURCE" 4 "INSUNITSDEFTARGET" 4))
(command "dim1" "update" (ssget "X" '((0 . "Leader"))) "")
(vla-regen adoc acactiveviewport)
(command "-purge" "a" "" "N")
(command "undo" "e")
(princ))

  • 1

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


#7 duyhung

duyhung

    biết vẽ rectang

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

Đã gửi 07 March 2011 - 10:02 PM

Cảm ơn bạn ketxu lisp dùng ổn rồi! Hj đọc lisp của bạn mà chưa rõ được mô tê j cả chỉ biết dùng thôi.
À tiện đây cho mình hỏi muốn lấy giá trị số trong text or mtext thì phải viết ntn? Mình viết 1 chút lisp cho mình như này:

(defun c:cali ()
(setvar "CMDECHO" 0)
(setq csdl (list 1 2 3 4 6 10 16 20 25 32 40 50 63 80 100 125 160 200 250 300 400 500 630 800 1000 1250))
(setq s (getreal "\nCho cong suat cua lo dien (kw): "))
(setq cosfi (getreal "\nCho cosfi cua lo dien (kw): "))
(setq i (/ s (* 1.732 0.38 cosfi)))
(setq a i)
(setq j 0)
(setq ds nil)
(while (setq x (nth j csdl))
(if
(and (> (- x a) 0) (< (- x a) 20))
(setq ds (append (list x)))
)
(setq j (1+ j))
)
(princ "\n Dong dien tinh toan cua lo: ")
(princ (fix i))
(princ "A")
(princ "\n AT tinh toan cua lo: ")
(setq kq (car ds))
(princ kq)
(princ "A")
(princ)
)

Mình muốn thay vì nhập công suất ta có thể lấy giá trị của text có sẵn để đưa vào tính toán (là các con số), bạn có thể gỡ bí này cho mình được không?
  • 0
Song va chien dau!

#8 ketxu

ketxu

    Copier - Paster - Editor

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

Đã gửi 07 March 2011 - 10:30 PM

Nội dung của text chứa trong mã dxf 1 của nó. Bạn có thể lấy nó ra bằng dòng :

(cdr (assoc Id (entget Obj)))

Trong đó Id là mã dxf ( ở đây là 1), Obj là ename của đối tượng Text (ở đây bạn muốn kich chọn, tức dùng (car(entsel)) ). Kết quả lấy đc ở dạng string, bạn dùng atof để chuyển nó về real nhé.Như vậy, bạn có thể sửa lại lisp của bạn như sau :

(defun c:cali ()
(setvar "CMDECHO" 0)
(setq s (atof (cdr (assoc 1 (entget(car(entsel "\n Chon cong suat : " ))))))
cosfi (getreal "\nCho cosfi cua lo dien (kw): ")
i (/ s (* 1.732 0.38 cosfi))
a i
j 0
ds nil
csdl (list 1 2 3 4 6 10 16 20 25 32 40 50 63 80 100 125 160 200 250 300 400 500 630 800 1000 1250)
)
(while (setq x (nth j csdl))
(if
(and (> (- x a) 0) (< (- x a) 20))
(setq ds (append (list x)))
)
(setq j (1+ j))
)
(princ "\n Dong dien tinh toan cua lo: ")
(princ (fix i))
(princ "A")
(princ "\n AT tinh toan cua lo: ")
(setq kq (car ds))
(princ kq)
(princ "A")
(princ)
)

P/S : bạn thử kiểm tra lại vòng lặp của bạn, mình thấy hình như nó chưa làm được đúng việc bạn muốn hay sao đó ^^. Chúc bạn thành công
  • 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


#9 duyhung

duyhung

    biết vẽ rectang

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

Đã gửi 07 March 2011 - 10:38 PM

Cảm ơn bạn ketxu, mình đã chọn được đối tượng text rồi. Cái vòng lặp này mình cũng đang rối tại vì làm việc với string này tạo list mình chưa quen, mà giải thuật của mình cũng chưa ổn lắm.Hj để mình mò tiếp vậy có j thắc mắc sẽ thọ giáo bạn sau.
Thanks and G9 ^^!
  • 0
Song va chien dau!

#10 xungfen

xungfen

    biết pan

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

Đã gửi 03 August 2013 - 10:46 AM

lệnh clead thì font không bị lỗi. nhưng lại chuyển hết về layer architec, và block không đổi màu ( việc này làm cho việc tắt lớp rất khó)

 

lệnh colorx thì chuẩn nhưng lỗi font. bạn vẫn chưa fix được lỗi font của colorx. bạn có thể fix giúp mình dc không.

 

hay là bạn hoàn chỉnh lệnh clear. đổi màu block và giữa nguyên layer để tiện tắt lớp thank a lot.


  • 0