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

luckylucke_2009

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

    16
  • Đã tham gia

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

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


  1. Nhờ các Bác sửa giúp đoạn lisp lấy giá trị của 2 option (key_1 và key_2).

    ///Dialog1
    dialog1 : dialog {
        label = "Tuy chon";
        width = 20;
        : column {
                    : radio_button {
                    label = "Co";
                    key = "key_1";
               	//value = "0";
               		       }
               		       
            	: radio_button {   
               	label = "Khong co";
               	key = "key_2";
               	value = "1";
               		       } 
         ok_cancel;
                 }//end: column
    	
    }//
    
    
    (Defun c:chay (/ key_1 key_2)
        (setq dcl_id (load_dialog "dialog1.dcl"))
        (if	(not (new_dialog "dialog1" dcl_id)) (exit))
        ;
        (action_tile "key_1" "(setq key_1 $value)")
        (if (= key_1 1)
          (princ "Ban da chon la: \"Co\"")
          (princ "Ban da chon la: \"Khong\"")
        )
        ;
        (action_tile "cancel" "(exit)")
        (mode_tile "accept" 2)
        (start_dialog)
        (unload_dialog dcl_id)
        (princ)
    );end defun
    

    Xin cám ơn rất nhiều!


  2. Trích dẫn help:

    70

    Attribute flags:

    1 = Attribute is invisible (does not appear)

    2 = This is a constant attribute

    4 = Verification is required on input of this attribute

    8 = Attribute is preset (no prompt during insertion)

    Tôi test OK.

    ;;;;;;;;MAIN;;;;;;;;;
    (defun C:1att (/ p0 G00 G90 LL)
     (setq G00 0.0
    	G90 (* pi 0.5))
     (setq p0 (getpoint "\nChon dien chen Attribute: "))
     (setq LL '("111" "222" "333"))
    
     (Make_att LL "standard" "0" p0 3.0 G00 1 1)
    
     (princ)
    )
    (Princ "\nStart command with <1att>")
    ;;;;; Ham con tao att
    (defun Make_att (LIST_ATT STYLE LAYER POINT HEIGHT ANG COLOR FLAG); Ang: Radial
    (entmake   (list  (cons 0 "ATTDEF")
    (cons 100 "AcDbEntity")
    (cons 7 (if STYLE STYLE (getvar "TextSTYLE")))
    (cons 8 (if LAYER LAYER (getvar "CLAYER")))
    (cons 100  "AcDbText")
    (cons 100  "AcDbAttributeDefinition")
    (cons 10 POINT)
    ;	(cons 11 POINT)
                 	(cons 70 FLAG)
    
     	(cons 40 HEIGHT)
    (if ANG (cons 50 ANG))
    (cons 62 (if COLOR COLOR 256))
    (cons 1 (nth 0 LIST_ATT)) ; Default value (string)
    (cons 2 (nth 1 LIST_ATT)) ; Tag (string and can not contain spaces)
    (cons 3 (nth 2 LIST_ATT)) ; Prompt (string)
    );end list
     );entmake
    );end defun
    

    Không biết sao nữa! Tôi test thử vẫn không hiện ra được attribute cần tạo!!??


  3. Năm mới chúc các Bác nhiều sức khỏe và Diễn đàn ngày một phát triển hơn!

    Nhờ các Bác xem giúp đoạn code sau, mục đích của đoạn code là tạo 1 attribute nhưng vẫn chưa chạy được?

    ;;;;;;;;MAIN;;;;;;;;;
    (defun C:1att (/ p0 G00 G90 LL)
     (setq G00 0.0
       	G90 (* pi 0.5))
     (setq p0 (getpoint "\nChon dien chen Attribute: "))
     (setq LL '("111" "222" "333"))
    
     (Make_att LL "standard" "0" p0 3.0 G00 1)
    
     (princ)
    )
    (Princ "\nStart command with <1att>")
    ;;;;; Ham con tao att
    (defun Make_att (LIST_ATT STYLE LAYER POINT HEIGHT ANG COLOR); Ang: Radial
    (entmake   (list  (cons 0 "ATTDEF")
    (cons 100 "AcDbEntity")
    (cons 7 (if STYLE STYLE (getvar "TextSTYLE")))
    (cons 8 (if LAYER LAYER (getvar "CLAYER")))
    (cons 100  "AcDbText")
    (cons 100  "AcDbAttributeDefinition")
    (cons 10 POINT)
    (cons 11 POINT)
     	(cons 40 HEIGHT)
    (if ANG (cons 50 ANG))
    (cons 62 (if COLOR COLOR 256))
    (cons 1 (nth 0 LIST_ATT)) ; Default value (string)
    (cons 2 (nth 1 LIST_ATT)) ; Tag (string and can not contain spaces)
    (cons 3 (nth 2 LIST_ATT)) ; Prompt (string)
    );end list
     );entmake
    );end defun
    


  4. ...Hix tưởng làm được, bắt tay vào thử lại không được, srr bạn, nhờ các mem khác giúp đỡ vậy

     

    Tôi đã tạo Mtext có upper và lower được rồi. Nhưng font chữ vẫn chưa ổn lắm.

    Nhờ các bác hoàn thiện thêm!

    ;;;;!!!!Ham tao Mtext co canh le + Lower and Upper (suu tam va chinh sua tu cadviet.com;;;;;;;;;;;;;;
    (defun mtextjus_ul (STRING1 STRING2 JUSTIFY STYLE LAYER POINT HEIGHT ANG COLOR / MT1)
    (setq MT1 (list (cons 0  "MTEXT")
            (cons 100  "AcDbEntity")
            (cons 7 (if STYLE STYLE (getvar "Textstyle")))
            (cons 8 (if LAYER LAYER (getvar "Clayer")))
            (cons 100  "AcDbMText")
            (cons 10 POINT)
    	(cons 11 POINT)
            (cons 40 HEIGHT)
            (cons 41 (* (+ (strlen STRING1) (strlen STRING2)) HEIGHT))
    	(cons 44 5)
            (cons 50 (if ANG ANG 0))
            (cons 62 (if COLOR COLOR 256))	
            (cons 71 5)
    	(cons 72 5))	
            JUSTIFY   (strcase JUSTIFY))							
    
    		  (cond ((= JUSTIFY "AL_ML") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxql;" STRING1 "{\\H0.7x;\\S^" STRING2 ";}"))
    									 (cons 71 4) (cons 72 5) (cons 73 2)))));after lower 70% + middle left MTEXT
    		  	((= JUSTIFY "AL_MR") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqr;" STRING1 "{\\H0.7x;\\S^" STRING2 ";}"))
    									 (cons 71 6) (cons 72 5) (cons 73 2)))));after lower 70% + middle right MTEXT
    			((= JUSTIFY "AL_MC") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqc;" STRING1 "{\\H0.7x;\\S^" STRING2 ";}"))
    									 (cons 71 5) (cons 72 5) (cons 73 2)))));after lower 70% + middle center MTEXT
    			;
    			((= JUSTIFY "AU_ML") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxql;" STRING1 "{\\H0.7x;\\S" STRING2 "^;}"))
    									 (cons 71 4) (cons 72 5) (cons 73 2)))));after upper 70% + middle left MTEXT
    		  	((= JUSTIFY "AU_MR") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqr;" STRING1 "{\\H0.7x;\\S" STRING2 "^;}"))
    									 (cons 71 6) (cons 72 5) (cons 73 2)))));after upper 70% + middle right MTEXT
    			((= JUSTIFY "AU_MC") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqc;" STRING1 "{\\H0.7x;\\S" STRING2 "^;}"))
    									 (cons 71 5) (cons 72 5) (cons 73 2)))));after upper 70% + middle center MTEXT
    			;
    			((= JUSTIFY "BL_ML") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxql;{\\H0.7x;\\S^" STRING2 ";\\H1.4286x;" STRING1 "}"))
    									(cons 71 4) (cons 72 5) (cons 73 2)))));before lower 70% + middle left MTEXT
    		  	((= JUSTIFY "BL_MR") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqr;{\\H0.7x;\\S^" STRING2 ";\\H1.4286x;" STRING1 "}"))
    									(cons 71 6) (cons 72 5) (cons 73 2)))));before lower 70% + middle right MTEXT
    			((= JUSTIFY "BL_MC") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqc;{\\H0.7x;\\S^" STRING2 ";\\H1.4286x;" STRING1 "}"))
    									(cons 71 5) (cons 72 5) (cons 73 2)))));before lower 70% + middle center MTEXT
    			;
    			((= JUSTIFY "BU_ML") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxql;{\\H0.7x;\\S" STRING2 "^;\\H1.4286x;" STRING1 "}"))
    									(cons 71 4) (cons 72 5) (cons 73 2)))));before upper 70% + middle left MTEXT
    		  	((= JUSTIFY "BU_MR") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqr;{\\H0.7x;\\S" STRING2 "^;\\H1.4286x;" STRING1 "}"))
    									(cons 71 6) (cons 72 5) (cons 73 2)))));before upper 70% + middle  right MTEXT
    			((= JUSTIFY "BU_MC") (setq MT1 (append MT1 (list (cons 1 (strcat "\\A1;\\pxqc;{\\H0.7x;\\S" STRING2 "^;\\H1.4286x;" STRING1 "}"))
    									(cons 71 5) (cons 72 5) (cons 73 2)))));before upper 70% + middle center MTEXT
    		);end cond
     (entmakex MT1)
    );end defun
    ;;;;;MAIN;;;;;;;
    (defun C:hhh (/ p0 G00 G90)
       (setq G00	0.0
    	  G90	(* pi 0.5))
     ;  
     (setq p0 (getpoint "\nChon dien chen MTEXT: ")) 
     ;
     (mtextjus_ul "ABC" "1234" "BU_MR" "TViet" "ChenMText" p0 3.0 G00 2)
     (princ)
    );end defun
    

     


  5. Nhờ các bác xem lại giùm đoạn lisp. Không biết lý do tại sao, biến TLE không lưu lại giá trị trong lần xuất lệnh sau?

    Xin cám ơn!

    (Defun c:TILE (/ TLE BCAO)
     (if (= TLE nil)
      (progn
         	(setq TLE (getreal "\nNhap ti le ban ve 1/<1.000>: "))
         	(if (= TLE nil) (setq TLE 1000.0))
    );end progn
      );end if
      (setq BCAO (strcat "Ban da nhap ti le la: 1/" (rtos TLE 2 2)))
      (princ BCAO)
    (princ)
    )
    


  6. Được bạn à! Nhưng sẽ rắc rối hơn vì phải bổ sung DXF 40 và 41. Và càng rắc rối hơn nữa nếu Lwpolyline có thêm Arc.

    Có phải DXF 40 là Starting Width, 41 là Ending Width không? nhưng cho tôi hỏi là: khi thêm vào 2 cái này vẫn chưa có kết quả như mong muốn. Width của polyline (chưa có arc) vẫn mặc định là 0.

    Cám ơn bác Ha đã quan tâm!


  7. Bạn chưa đọc kỹ hàm If rồi.

    Sau khi kiếm tra điều kiện If, nó chỉ thực hiện 1 việc thôi. Đúng (k nil) thì làm 1 việc A, nil thì làm 1 việc B (1 việc = 1 cái trong cặp dấu () ý)

    => Hàm if của bạn viết bị sai ý nghĩa, ^c^c chỉ thực hiện khi kiểm tra tìm thấy file. Khi k thấy file thì chỉ thực hiện hàm alert

    Muốn gộp nhiều việc làm 1, bạn hãy đọc qua hàm Progn để gộp alert + ^c^c vào làm 1 ^^

    Nhưng khi tôi bỏ hẳn alert trong hàm IF thì vẫn không hiểu ^C^C để thoát lệnh.

    Vẫn chưa hiểu, xin chỉ giúp thêm!

    (Prompt "\Thi hanh bang lenh \"chaythu\".")
    	;Chuong trinh chinh
    (Defun C:chaythu ()
    
      (chophep)
    
      (command "_.TEXT" "mc" (list 0.0 0.0 0.0) 5.0 0.0 "CHAY BINH THUONG")
    
      (alert "Chuong trinh chay binh thuong!")
      (princ)
    );end defun chinh
    (defun chophep (/ CHECK)
      (setq CHECK (findfile "C:\\Windows\\win11111.ini"))
      (if (= CHECK nil)
    	^^C)
    );end chophep
    

     

    Kết quả vẫn chạy ra dòng text: CHAY BINH THUONG. Chứ không ngắt lệnh!?


  8. Rất cám ơn bác ketxu! Cho tôi hỏi thêm 1 cái nữa.

    Sau khi chỉnh sửa đoạn code lại:

    (Prompt "\Thi hanh bang lenh \"chaythu\".")
    	;Chuong trinh chinh
    (Defun C:chaythu ()
    
      (chophep)
    
      (command "_.TEXT" "mc" (list 0.0 0.0 0.0) 5.0 0.0 "CHAY BINH THUONG")
    
      (alert "Chuong trinh chay binh thuong!")
      (princ)
    );end defun chinh
    (defun chophep (/ CHECK)
      (setq CHECK (findfile "C:\\Windows\\win111.ini"))
      (if (= CHECK nil)
      	(Alert "ban ko duoc su dung chuong trinh  nay!")
      ^c^c; thoat lenh
      	);end if
    );end chophep
    

     

    Tuy nhiên, vẫn còn một vấn đề là dòng ^c^c để thoát lệnh không có tác dụng. Mục đích của tôi là sau khi tìm không thấy file "win111.ini" thì sẽ thoát hẳn khỏi defun chính luôn. Nhờ bác hướng dẫn thêm!


  9. Nhờ anh chị chỉnh sửa giúp tôi đoạn lisp vẫn còn bị lỗi.

    Nội dung của đoạn lisp là: Trong phần chương trình chính, có một chương trình con. Chương trình con này thực hiện kiểm tra sự tồn tại của 1 file trong ổ cứng. Xảy ra 2 trường hợp:

    1. Có tồn tại file đang dò tìm, thì cho phép chạy tiếp tục chương trình chính.

    2. Không tìm thấy, sẽ thoát khỏi chương trình con, và chương trình chính.

    Cám ơn nhiều!

    Đoạn code:

    (defun C:chaythu
    (CHECKFILE)
    (alert "Chuong trinh chay binh thuong!")
    (princ)
    
    ; Ham kiem tra
    (defun CHECKFILE (/ CHECK1)
      (setq CHECK1 (open "C:/file345.txt" "r"))
      (if (= CHECK1 nil)
      	(alert "Khong tim thay!")
      	^c^c ; thoat lenh
    )
    ); end CHECKFILE
    )
    

×