Chuyển đến nội dung
Diễn đàn CADViet

duyhung

Thành viên
  • Số lượng nội dung

    87
  • Đã tham gia

  • Lần ghé thăm cuối

Bài đăng được đăng bởi duyhung


  1. 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?


  2. 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.


  3. Điểm 1 và 2 là giới hạn vùng chọn để in. Tức là như thế này.

    Bạn có 10 bản vẽ chẳng hạn. Đầu tiên chương trình yêu cấu bạn chọn khung điển hình thì bạn chọn vào khung tên bất kì (có thể là block hoặc rectang) sau đó chương trình yêu cầu chọn diểm 1 và điểm 2 thì bạn chọn sao cho vùng chọn bao chùm những khung cần in. Chương trình sẽ tự đọng lọc nhữnh khung tên mà bạn chọn trong vùng chọn đó và hiển thị số bản in trên giao diện chương trình.

    Cái này đòi fai cài netframework phải không bác :-/


  4. Mình muốn viết 1 lisp đơn giản đó là vẽ 2 đường poline theo một khoảng cách duy nhất do mình nhập vd = 200, nhưng 1 đường poline thuộc layer và màu của layer hiện thời, còn poline còn lại mặc định thuộc layer depoint và màu là màu mặc định or màu là màu 8.

    Khi bắt đầu lệnh thì sẽ vẽ dọc theo đường poline mặc định thuộc layer depoint.

    Thanks mọi người đã quan tâm.


  5. Á, topic đã bị quên lãng lâu óa, nay bạn duyhung post vào mới thấy nó nổi lên

    Sau tin này là bạn foudremars bỏ mình bơ vơ ngồi ôm mộng luôn, hok thèm reply chỉ nghề nữa :) Chắc giận

    --> Bạn đã thử dùng code bác Tuệ viết bên trên chưa? và lỗi ra răng ?

    Code này mình dùng thấy oki khi các text bình thường xong với block att là cao độ của các thiết bị thì nó hỏng có xoay và làm việc! ^^! :)


  6. Bạn edit trực tiếp trong block edit (bedit), thấy cái nào ưng thì để, cái nào ghét thì xóa, còn ít quá thì tạo thêm, sau đó lưu block lại thôi :)

    OH bạn ketxu ơi mình đã edit như thế nhưng những cái mình del thì khi save thì nó vẫn hiện lên, đôi khi cái del và cái mình tạo nó hiện trùng lên nhau thế nên mình mới rất thắc mắc.

    Có những text field mình del nhưng save block thì nó vẫn hiện các thuộc tính để mình đưa giá trị vào trog khi kiểm tra trong block thì không có.

    Thế nên mình thường fai copy sang 1 file mới và explode nó rồi tạo lại block.

    Hj không biết trường hợp của mình có phải riêng lẻ không!


  7. Cám ơn 02 bạn hatieu và duy782006,

     

    Để mình giải thích rõ hơn về nhu cầu của minh :

     

    Giả sử bây giờ mình có 100 cái block tên lần lượt là : Cua phong 001, Cua phong 002................................ Cua phong 100

     

    Nếu dùng lệnh Rename để sửa thành : Cua ve sinh 001, Cua ve sinh 002.......................... Cua ve sinh 100

     

    Thì mình phải lập đi lập lại động tác trên 100 lần, rất mất thời gian. Còn nếu dùng lệnh -REN kết hợp với wild-card characters thì CAD lại không nhận diện được các block đó.

     

    Mình đã thử cũng nhiều phương pháp rồi, cũng đã tham khảo trên mạng, nhưng chưa giải quyết được vấn đề.

     

    Ý mình là nếu như mình chọn các block có tên "*Cua phong*" rồi nhập tên mới là "*Cua ve sinh*" thì tất cả các block có tên chứa "Cua phong" sẽ thay đổi hàng loạt thành "Cua ve sinh"

     

    Thanks nhiều.

    Thử dùng kết hợp filter or quick select được ko bạn?


  8. Nhờ ae sửa hộ mình một chút cái lisp này:

    - Cái lisp này là bố trí block theo yêu cầu của mình với điều kiện khoảng cách 2 block = 2 lần khoảng cách từ block tới cạnh của HCN.

    - Mình muốn sửa một chút là vẫn nhập các điểm của HCN, số block theo trục x, số block theo trục y nhưng với điều kiện hơi khác một chút đó là khoảng cách 2 block theo trục x= 1200x số block theo trục x, còn khoảng cách 2 block theo trục y= 600x số block theo trục y.

    ;; free lisp from cadviet.com
    
    
    (defun c:dd ()
    (batdau)
    (command "undo" "be")
    (setq oldos (getvar "osmode"))
    (command "osnap" "End,Mid,Cen,Node,Quad,Int,Ins,Perp,Tan,Near,App,Int,Ext,Par")
    (setq bd (car (entsel "\nChon block can chen: ")))
    (while (= bd nil)
    (setq bd (car (entsel "\nChon block can chen: ")))
    )
    (setq boun (acet-ent-geomextents bd)
    tam (polar (car boun) (angle (car boun) (cadr boun))
    (/ (distance (car boun) (cadr boun)) 2))
    )
    (setq p1 (getpoint "\nChon diem thu nhat: ")
    p2 (getcorner p1 "\nChon diem thu hai: ")
    vx (abs (- (car p1) (car p2)))
    vy (abs (- (cadr p1) (cadr p2)))
    ix (getint "\nSo block theo truc x: ")
    iy (getint "\nSo block theo truc y: ")
    dix (/ vx (* ix 2))
    diy (/ vy (* iy 2))
    )
    (if (< (angle p1 p2) (/ pi 2))
    (setq pc (list (+ (car p1) dix) (+ (cadr p1) diy) 0))
    )
    (if (and (< (angle p1 p2) pi) (> (angle p1 p2) (/ pi 2)))
    (progn
    (setq p1 (list (car p2) (cadr p1) 0))
    (setq pc (list (+ (car p1) dix) (+ (cadr p1) diy) 0))
    )
    )
    (if (and (< (angle p1 p2) (/ (* pi 3) 2)) (> (angle p1 p2) pi))
    (setq pc (list (+ (car p2) dix) (+ (cadr p2) diy) 0))
    )
    (if (and (< (angle p1 p2) (* pi 2)) (> (angle p1 p2) (/ (* pi 3) 2)))
    (progn
    (setq p1 (list (car p1) (cadr p2) 0))
    (setq pc (list (+ (car p1) dix) (+ (cadr p1) diy) 0))
    )
    )
    (setq sspoi (ssadd))
    (command "copy" bd "" tam pc)
    (repeat (1- ix)
    (setq poi (entlast))
    (setq sspoi (ssadd poi sspoi))
    (command "copy" poi "" pc
    (strcat "@" (rtos (* dix 2) 2 3) ",0")
    )
    )
    (setq sspoi (ssadd (entlast) sspoi))
    (setq y 0)
    (repeat (1- iy)
    (setq y (+ y (* diy 2)))
    (command "copy" sspoi "" pc
    (strcat "@0," (rtos y 2 3))
    )
    )
    (setvar "osmode" oldos)
    (ketthuc)
    )
    
    (defun batdau ()
     (command "undo" "be")
     (setvar "cmdecho" 0)
     (setq 
        old_er *error*
        *error* myerror
     ) 
    )
    
    (defun myerror (errmsg)
    (ketthuc)
    (command "undo" "")
    )
    
    (defun ketthuc ()
     (setq *error* old_er)
     (setvar "cmdecho" 1)
     (command "undo" "e")
    )
    

    Và đây là file cad mình muốn

    cad.png

×