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

Nhờ sửa lisp vẽ hình chữ nhật bằng DCL

Các bài được khuyến nghị

vhcn.lsp

Nhờ mọi người sửa lisp vẽ hình chữ nhật bằng DCL này làm sao để chiều dài các cạch lưu lại các lần mình đã nhập từ lần nhập trước đó. Trân trọng cảm ơn!

  • Vote giảm 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Bạn tham khảo nhé!
 

(defun c:00 ()
  (command "undo" "be")
  (setq cmd (getvar "cmdecho"))
  (setvar "cmdecho" 1)
  (setq	vl_ltren0 "2.0"
	vl_lduoi0 "2.0"
	vl_ltrc0 "2.0"
	vl_lsau0 "2.0"
  )
  (setq	dcl_code (list
		   (strcat
		     "vehinhchunhat : dialog { label = \"&Ve hinh chu nhat\";"
		     " : boxed_radio_column { label = \"Chon loai\"; key = \"hcn\";"
		     "		 : radio_button { label = \"&1-Hinh chu nhat lech TREN\"; key = \"tren\";}"
		     "		 : radio_button { label = \"&2-Hinh chu nhat lech TRAI\"; key = \"trai\";}}"
		     "	: row {"
		     "	: column {"
		     "	   : edit_box { label = \"Chieu dai canh duoi (m)\"; edit_width = 5; key = \"lduoi\";}"
		     "	   : edit_box { label = \"Chieu dai canh tren (m)\"; edit_width = 5; key = \"ltren\";}"
		     "	   : edit_box { label = \"Chieu dai canh truoc (m)\"; edit_width = 5; key = \"ltruoc\";}"
		     "	   : edit_box { label = \"Chieu dai canh sau (m)\"; edit_width = 5; key = \"lsau\";}}"
		     "              }"
		     " ok_cancel;}"
		    )
		 )
  )
  (setq	temp	 (vl-filename-mktemp "vehinhchunhat.dcl")
	file_dcl (open temp "W")
  )
  (foreach l dcl_code (write-line l file_dcl))
  (close file_dcl)
  (setq dcl_id (load_dialog temp))
  (vl-file-delete temp)
  (new_dialog "vehinhchunhat" dcl_id)
  (if (not rad_lech)
    (setq rad_lech "tren")
  )
  (set_tile rad_lech "1")

  (action_tile
    "tren"
    "(mapcar 'mode_tile '(\"lduoi\" \"ltren\" \"ltruoc\" \"lsau\" ) '(0 1 0 0))
     (setq rad_lech $key)
     "
  )
  (action_tile
    "trai"
    "(mapcar 'mode_tile '(\"lduoi\" \"ltren\" \"ltruoc\" \"lsau\" ) '(0 0 1 0))
     (setq rad_lech $key)
     "
  )



  (if (not vl_ltren)
    (setq vl_ltren vl_ltren0)
  )
  (set_tile "ltren" vl_ltren)

  (if (not vl_lduoi)
    (setq vl_lduoi vl_lduoi0)
  )
  (set_tile "lduoi" vl_lduoi)

  (if (not vl_ltrc)
    (setq vl_ltrc vl_ltrc0)
  )
  (set_tile "ltruoc" vl_ltrc)

  (if (not vl_lsau)
    (setq vl_lsau vl_lsau0)
  )
  (set_tile "lsau" vl_lsau)
  
  (action_tile
    "accept"
    "(if (= rad_lech \"tren\")
    (progn
         (setq vl_tren (get_tile  \"lduoi\"))
         (setq vl_lduoi (get_tile  \"lduoi\"))
         (setq vl_ltrc (get_tile  \"ltruoc\"))
         (setq vl_lsau (get_tile  \"lsau\"))
         ;(hinhchunhatlechtren lduoi ltren ltrc lsau)
     )
     (progn
         (setq vl_ltren (get_tile  \"ltren\"))
         (setq vl_lduoi (get_tile  \"lduoi\"))
         (setq vl_ltrc (get_tile  \"ltruoc\"))
         (setq vl_lsau (get_tile  \"lsau\"))
         ;(hinhchunhatlechtrai lduoi ltren ltrc lsau)
     ))
     (done_dialog)"
  )
  (action_tile "cancel" "(done_dialog) (exit)")
  (start_dialog)
  (unload_dialog dcl_id)
  (command "style" "vntime.shx" "vntime.shx" "0" "0.75" "0" "n" "n" "n")
  (command "style" "vntimeh.shx" "vntimeh.shx" "0" "0.75" "0" "n" "n" "n")
							    ;tao lop kich thuoc
  (if (tblsearch "dimstyle" "D25")
    (command "_dimstyle" "r" "D25")
    (progn
      (command "DIMSCALE" 0)
      (command "DIMDLE"	0.15 "DIMDLI" 0.2 "DIMEXE" 0.15	"DIMEXO" 0 "DIMBLK1" "Oblique" "DIMBLK2" "Oblique" "DIMLDRBLK" "Oblique" "DIMASZ" 0.1 "DIMSAH" "ON" "DIMCEN" 0.1 "DIMTAD" 1 "DIMJUST" 0)
      (command "DIMTXSTY" "vntime.shx" "DIMCLRT" 7 "DIMGAP" 0.05 "DIMDEC" 0 "DIMTOH" "OFF" "DIMTIH" "OFF" "DIMTIX" "ON"	"DIMTXT" 0.25 "DIMFXLON" "On" "DIMFXL" 0.2 "DIMTMOVE" 2	"DIMTOFL" "On" "DIMLFAC"
	       25)
      (command "-dimstyle" "s" "D25")
    )
  )
  (if (tblsearch "dimstyle" "D100")
    (command "_dimstyle" "r" "D100")
    (progn
      (command "DIMSCALE" 0)
      (command "DIMDLE"	0.15 "DIMDLI" 0.2 "DIMEXE" 0.15	"DIMEXO" 0 "DIMBLK1" "Oblique" "DIMBLK2" "Oblique" "DIMLDRBLK" "Oblique" "DIMASZ" 0.1 "DIMSAH" "ON" "DIMCEN" 0.1 "DIMTAD" 1 "DIMJUST" 0)
      (command "DIMTXSTY" "vntime.shx" "DIMCLRT" 7 "DIMGAP" 0.05 "DIMDEC" 0 "DIMTOH" "OFF" "DIMTIH" "OFF" "DIMTIX" "ON"	"DIMTXT" 0.25 "DIMFXLON" "On" "DIMFXL" 0.2 "DIMTMOVE" 2	"DIMTOFL" "On" "DIMLFAC"
	       100)
      (command "-dimstyle" "s" "D100")
    )
  )
  
  (setvar "cmdecho" cmd)
  (command "undo" "end")
  (princ)
)

 

  • Like 1

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác
Vào lúc 13/6/2025 tại 08:59, thanhduan2407 đã nói:

Bạn tham khảo nhé!
 


(defun c:00 ()
  (command "undo" "be")
  (setq cmd (getvar "cmdecho"))
  (setvar "cmdecho" 1)
  (setq	vl_ltren0 "2.0"
	vl_lduoi0 "2.0"
	vl_ltrc0 "2.0"
	vl_lsau0 "2.0"
  )
  (setq	dcl_code (list
		   (strcat
		     "vehinhchunhat : dialog { label = \"&Ve hinh chu nhat\";"
		     " : boxed_radio_column { label = \"Chon loai\"; key = \"hcn\";"
		     "		 : radio_button { label = \"&1-Hinh chu nhat lech TREN\"; key = \"tren\";}"
		     "		 : radio_button { label = \"&2-Hinh chu nhat lech TRAI\"; key = \"trai\";}}"
		     "	: row {"
		     "	: column {"
		     "	   : edit_box { label = \"Chieu dai canh duoi (m)\"; edit_width = 5; key = \"lduoi\";}"
		     "	   : edit_box { label = \"Chieu dai canh tren (m)\"; edit_width = 5; key = \"ltren\";}"
		     "	   : edit_box { label = \"Chieu dai canh truoc (m)\"; edit_width = 5; key = \"ltruoc\";}"
		     "	   : edit_box { label = \"Chieu dai canh sau (m)\"; edit_width = 5; key = \"lsau\";}}"
		     "              }"
		     " ok_cancel;}"
		    )
		 )
  )
  (setq	temp	 (vl-filename-mktemp "vehinhchunhat.dcl")
	file_dcl (open temp "W")
  )
  (foreach l dcl_code (write-line l file_dcl))
  (close file_dcl)
  (setq dcl_id (load_dialog temp))
  (vl-file-delete temp)
  (new_dialog "vehinhchunhat" dcl_id)
  (if (not rad_lech)
    (setq rad_lech "tren")
  )
  (set_tile rad_lech "1")

  (action_tile
    "tren"
    "(mapcar 'mode_tile '(\"lduoi\" \"ltren\" \"ltruoc\" \"lsau\" ) '(0 1 0 0))
     (setq rad_lech $key)
     "
  )
  (action_tile
    "trai"
    "(mapcar 'mode_tile '(\"lduoi\" \"ltren\" \"ltruoc\" \"lsau\" ) '(0 0 1 0))
     (setq rad_lech $key)
     "
  )



  (if (not vl_ltren)
    (setq vl_ltren vl_ltren0)
  )
  (set_tile "ltren" vl_ltren)

  (if (not vl_lduoi)
    (setq vl_lduoi vl_lduoi0)
  )
  (set_tile "lduoi" vl_lduoi)

  (if (not vl_ltrc)
    (setq vl_ltrc vl_ltrc0)
  )
  (set_tile "ltruoc" vl_ltrc)

  (if (not vl_lsau)
    (setq vl_lsau vl_lsau0)
  )
  (set_tile "lsau" vl_lsau)
  
  (action_tile
    "accept"
    "(if (= rad_lech \"tren\")
    (progn
         (setq vl_tren (get_tile  \"lduoi\"))
         (setq vl_lduoi (get_tile  \"lduoi\"))
         (setq vl_ltrc (get_tile  \"ltruoc\"))
         (setq vl_lsau (get_tile  \"lsau\"))
         ;(hinhchunhatlechtren lduoi ltren ltrc lsau)
     )
     (progn
         (setq vl_ltren (get_tile  \"ltren\"))
         (setq vl_lduoi (get_tile  \"lduoi\"))
         (setq vl_ltrc (get_tile  \"ltruoc\"))
         (setq vl_lsau (get_tile  \"lsau\"))
         ;(hinhchunhatlechtrai lduoi ltren ltrc lsau)
     ))
     (done_dialog)"
  )
  (action_tile "cancel" "(done_dialog) (exit)")
  (start_dialog)
  (unload_dialog dcl_id)
  (command "style" "vntime.shx" "vntime.shx" "0" "0.75" "0" "n" "n" "n")
  (command "style" "vntimeh.shx" "vntimeh.shx" "0" "0.75" "0" "n" "n" "n")
							    ;tao lop kich thuoc
  (if (tblsearch "dimstyle" "D25")
    (command "_dimstyle" "r" "D25")
    (progn
      (command "DIMSCALE" 0)
      (command "DIMDLE"	0.15 "DIMDLI" 0.2 "DIMEXE" 0.15	"DIMEXO" 0 "DIMBLK1" "Oblique" "DIMBLK2" "Oblique" "DIMLDRBLK" "Oblique" "DIMASZ" 0.1 "DIMSAH" "ON" "DIMCEN" 0.1 "DIMTAD" 1 "DIMJUST" 0)
      (command "DIMTXSTY" "vntime.shx" "DIMCLRT" 7 "DIMGAP" 0.05 "DIMDEC" 0 "DIMTOH" "OFF" "DIMTIH" "OFF" "DIMTIX" "ON"	"DIMTXT" 0.25 "DIMFXLON" "On" "DIMFXL" 0.2 "DIMTMOVE" 2	"DIMTOFL" "On" "DIMLFAC"
	       25)
      (command "-dimstyle" "s" "D25")
    )
  )
  (if (tblsearch "dimstyle" "D100")
    (command "_dimstyle" "r" "D100")
    (progn
      (command "DIMSCALE" 0)
      (command "DIMDLE"	0.15 "DIMDLI" 0.2 "DIMEXE" 0.15	"DIMEXO" 0 "DIMBLK1" "Oblique" "DIMBLK2" "Oblique" "DIMLDRBLK" "Oblique" "DIMASZ" 0.1 "DIMSAH" "ON" "DIMCEN" 0.1 "DIMTAD" 1 "DIMJUST" 0)
      (command "DIMTXSTY" "vntime.shx" "DIMCLRT" 7 "DIMGAP" 0.05 "DIMDEC" 0 "DIMTOH" "OFF" "DIMTIH" "OFF" "DIMTIX" "ON"	"DIMTXT" 0.25 "DIMFXLON" "On" "DIMFXL" 0.2 "DIMTMOVE" 2	"DIMTOFL" "On" "DIMLFAC"
	       100)
      (command "-dimstyle" "s" "D100")
    )
  )
  
  (setvar "cmdecho" cmd)
  (command "undo" "end")
  (princ)
)

 

cảm ơn bạn nhiều nhưng các action hinhchunhatlechtren không hoạt động, và đây là lệnh có 2 loại lệch trên và lệch trái, ví dụ có nhiều loại thì sửa như nào bạn có thể hướng dẫn giúp mình được không

Chia sẻ bài đăng này


Liên kết tới bài đăng
Chia sẻ trên các trang web khác

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×