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

nguyenbd1

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

    280
  • Đã tham gia

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

  • Ngày trúng

    2

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


  1. Xin sự trợ giúp của mọi người về hộp thoai dcl:

    Vấn đề 1: về  xuất bản vẽ. ở đây mình có 4 lần xuất bản vẽ cố định là top, left, back, và iso, giơ minh muốn làm 1 hộp thoai co 4 mục như trên ” top, left, back, và iso” chon mục nào thì nó sẽ xuất ra hinh chiếu đó

    Vấn đề thứ 2: hiện tại lisp đang 1 lần xuất được 1 chi tiết( tức là chọn 1 chi tiết nó thực hiện xuất thứ tự các hình chiếu ” top, left, back, và iso”) khi minh chọn nhiều chi tiết thì phải chọn từ 1 xuất bản vẽ, chọn thứ 2 xuất bản vẽ, chọn chi tiết thứ 3 xuất bản vẽ... chọn chi tiết thứ N xuất bản vẽ.... bây giờ mình muốn chọn từ chi tiết 1 đến n sau đó xuất bản vẽ. Rất mong sự giúp đỡ moi người

    (defun c:XX(/ dt)
    (command "undo" "be")
        
        (setvar "cmdecho" 1)
         (setq dt (ssget))
        (vl-cmdf "shademode" "2")
    (setq a (getpoint "BUOC1/ VUI LONG CHON TAM CHI TIET"))
        (vl-cmdf "ucs" a "")
        (command "view" "t" )

        (vl-cmdf "chprop" dt "" "p" "c" "2" "" )
        (vl-cmdf "TILEMODE" "0")
        (vl-cmdf "Mspace")

        
            (vl-cmdf "SOLPROF" dt "" "y" "y" "n")
     
        (vl-cmdf "EXPLODE" "l" "")
        (vl-cmdf "CHANGE" "p" "" "Properties"  "Color"  "5" "" )
        (vl-cmdf "CHANGE" "p" "" "Properties"  "lt"  "DASHEDX2" "" )

         (vl-cmdf "rotate3d" dt "" "y" "@0,0,0" "" "90")    
        (vl-cmdf "SOLPROF" dt "" "y" "y" "n")
        (vl-cmdf "EXPLODE" "l" "")
        (vl-cmdf "CHANGE" "p" "" "Properties"  "Color"  "5" "" )
        (vl-cmdf "CHANGE" "p" "" "Properties"  "lt"  "DASHEDX2" "" )

          (vl-cmdf "rotate3d" dt "" "y" "@0,0,0" "" "-90")
          (vl-cmdf "rotate3d" dt "" "x" "@0,0,0" ""  "-90")
          (vl-cmdf "SOLPROF" dt "" "y" "y" "n")
        (vl-cmdf "EXPLODE" "l" "")
        (vl-cmdf "CHANGE" "p" "" "Properties"  "Color"  "5" "" )
        (vl-cmdf "CHANGE" "p" "" "Properties"  "lt"  "DASHEDX2" "" )
          (vl-cmdf "rotate3d" dt "" "x"  "@0,0,0" "" "90")

        (vl-cmdf "rotate3d" dt "" "x" "@0,0,0" "" "45")
        (vl-cmdf "rotate3d" dt "" "y" "@0,0,0" "" "45")
        
        (vl-cmdf "SOLPROF" dt "" "y" "y" "n")
        (entdel(entlast))
        
        (vl-cmdf "rotate3d" dt "" "y" "@0,0,0" "" "-45")
        (vl-cmdf "rotate3d" dt "" "x" "@0,0,0" "" "-45")
        
          (vl-cmdf "model" "")
        
        (command "undo" "end")
    (command "view" "t" )
         (command "updatefield")
    )

     

    1.dwg


  2. Vào lúc 7/1/2012 tại 07:47, Doan Van Ha đã nói:

    Đây là một ví dụ

    File Lisp

     

    
    (defun C:CONG()
    (setq DCL_ID (load_dialog "CONG"))
    (if (not (new_dialog "CONG" DCL_ID)) (exit))
    (if (not a) (setq a "0.00"))
    (set_tile "a" a)
    (if (not B) (setq b "0.00"))
    (set_tile "b" B)
    (action_tile "a" "(setq a $value) (KIEM_TRA_LOI)")
    (action_tile "b" "(setq b $value) (KIEM_TRA_LOI)")
    (action_tile "cong" "(set_tile \"c\" (rtos (+ (distof (get_tile \"a\")) (distof (get_tile \"b\")))))")
    (start_dialog)
    (unload_dialog DCL_ID)
    (princ))
    (defun KIEM_TRA_LOI()
    (set_tile "error" "")
    (if
     (/= (type (distof a)) 'real)
     (progn
      (set_tile "error" "Cho em xin mot so thuc !")
      (mode_tile "a" 2)))
    (if
     (/= (type (distof B)) 'real)
     (progn
      (set_tile "error" "Cho em xin mot con so !")
      (mode_tile "b" 2))))
    
     

     

    File Dcl

    Yêu cầu của CV e làm cũng tương tự như thế này. Ngoài 3 dòng a b c  còn có  thêm 2dòng  d và e. Trong đó c= tanga*b. D= e+c và khi nhập số các ô tự động nhảy thể dữ liệu được nhập . Rất mong bác giúp 

     


  3. (defun c:q(/ oldos tam lstpoint a b kc hesoscale n)

    (while

    (setq oldos (getvar "OSMODE"))

    (setvar "cmdecho" 0)

    (setvar "osmode" 0)

    (command "RECTANG" pause pause)

    (setq tam (entlast))

    (setq lstpoint (ACET-GEOM-VERTEX-LIST tam))

    (setq lstpoint (vl-sort lstpoint '(lambda(x y) (or (< (car x) (car y))

     (and (= (car x) (car y)) (< (cadr x) (cadr y)))))))

    (setq a (car lstpoint))

    (setq lstpoint (vl-sort lstpoint '(lambda(x y) (or (> (cadr x) (cadr y))

     (and (= (cadr x) (cadr y)) (> (car x) (car y)))))))

    (setq b (car lstpoint))

    (setq kc (distance a b))

    (setq xa (car a))

    (setq ya (cadr a))

    (setq xb (car B))

    (setq yb (cadr B))

    (setq xab (+ xa xb))

    (setq yab (+ ya yb))

    (setq xc (/ xab 2))

    (setq yc (/ yab 2))

    (setq c (list xc yc))

    (setq hesoscale (/ kc 279))

    (command "INSERT" (strcat "D:\\cua\\A4") c hesoscale hesoscale "" "" "" "")

    (command "EXPLODE" "L" "" )

    (command ".ERASE" tam "")

     (setq kyhieu 1)

    (setq da (getpoint "\nChon diem viet <Enter de ket thuc>: ")

    (command ".TEXT" "m" "_non" da 200 0 kyhieu)

    (setq kyhieu (+ kyhieu 1))

    ))

    )

    )

     


  4. Cũng là vấn đề cũ nhưng là đi theo hướng khác. E muốn lấy phép chia của 2 đoạn thẳng. Câu trúc như sau. Chọn điểm 1 và 2 tinh được khoảng cách 1 và 2 là a sau đó chọn điểm 3 chọn điểm 4  tình được khoảng cách 3 và 4 là b sau đó lấy a chia b và lấy kết quả đó ghi ra màn hình autocad. Rất mong anh e giúp đỡ


  5. Vào lúc 26/12/2011 tại 14:22, vantuan18nd đã nói:

    Mình có nhờ Anh Vo Quang Tue ( hay Võ Quang Tuệ gì gì đấy :mellow: ) làm cho Lisp đo khoảng cách rất hay như sau

    -chọn điểm thứ nhất

    -chọn điểm thứ hai

    -Kết quả thay cho một số có sẵn

     

     

    
    (defun C:TL3( / ss L te p1 p2)
    
    (while (and (setq p1 (getpoint "\n Chon diem thu nhat :"))
    (setq p2 (getpoint p1 "\n Chon diem thu hai :"))
    )
    (setq L (distance p1 p2))
    
    
    (setq te (entget(car("\n Chon Text de gan ket qua :")))
    te (subst (cons 1 (rtos L 2 2)) (assoc 1 te) te))
    (entmod te)
    )
    )
    
     

     

     

     

     

    -> Enter để kết thúc lệnh

     

    - Bây giờ mình muốn kết quả tìm được phải ghi ra nơi mình chọn, không phải là thay cho một


  6. HÔM NAY TÔI CÓ 1 VẤN ĐỀ RẤT MONG CÁC  CAO THỦ GIÚP ĐỠ. TÔI CÓ 1 CÔNG VIỆC THƯỜNG XUYÊN CHUYEN BẢN VẼ. VỚI 1 LOẠI KHỔ  GIẤY  A4 SANG PDF... TRONG 1 FILE CHƯA RẤT NHIỀU BẢN VẼ. GIỜI MUỐN CHUYỂN TỪNG KHUNG TÊN 1 RA PDF... TÔI ĐÃ CỐ SỬ DỤNG LỆNH -PLOT... VẦ HIỆU QUẢ CỦA NÓ MANG LẠI THÌ NGOÀI SỨC TƯỞNG TƯỢNG CỦA TÔI.

    PDF THÌ PHẢI CHỌN MỘT WINDOW 1--> IN XONG.  WINDOW 2 --..CHỜ IN XONG .. CỨ TIẾP TỤC NHƯ THẾ TỚI WINDOW CUỐI  CUNG GIỜ TÔI NHỜ ANH EM SỬA DÙM  CHON WINDOW1,2, 3,4....  IN 1 LÂN  LUÔN CẢM ƠN ANH EM NHIỀU. SAU TÔI XIN GỬI FILE LISP VÀ HÌNH MINH HOẠhttp://www.cadviet.com/upfiles/5/122369_1_2.lsp122369_1_2.jpg


  7. Bạn dùng cái này xem ưng bụng không?

    (defun C:HA()	;Doan Van Ha Cadviet.com
     (princ "\nChon cac Text/Mtext/Dimension can xuat ra file...")
     (setq lst (acet-ss-to-list (ssget '((0 . "*TEXT,DIMENSION"))))
           	fn (getfiled "Chon file de save" "" "csv" 1)
           	fw (open fn "w"))
     (foreach n lst
      (cond
       ((= (cdr (assoc 0 (entget n))) "TEXT") (setq txt (cdr (assoc 1 (entget n)))))
       ((= (cdr (assoc 0 (entget n))) "MTEXT") (setq txt (cdr (assoc 1 (entget n)))))
       ((= (cdr (assoc 0 (entget n))) "DIMENSION")
    	(if (= (cdr (assoc 1 (entget n))) "")
     	(setq txt (rtos (cdr (assoc 42 (entget n)))))
     	(setq txt (cdr (assoc 1 (entget n)))))))
      (princ (strcat txt "\n") fw))
     (close fw))
    

    sao em load và gõ lệnh nó báo lỗi vậy"Select objects:  ; error: no function definition: ACET-SS-TO-LIST" bạc hà giúp em với ạ


  8.  nhờ các bác ảnh giúp e vấn đề này với. giờ em muốn tính thể tích 1 hình hộp chữ nhật. gồm kích thước chiều rộng là a chiều dài là b chiều cao là c... sau khi chọn mỗi cạnh thì chương chính sẽ tự cộng thêm  2mm vào mỗi kích thước và làm phép tính nhân như trong hình gì ra màn hình cad 2 hàng chữ như trong hình rất mong sự giúp đỡ của các anh chị122369_untitled.jpg

    • Vote giảm 1
×