明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: cyh3278

[求助]

  [复制链接]
发表于 2003-4-15 21:24:00 | 显示全部楼层

用Trim也有办法,只要使用双元表,这方面还是陈老师来介绍好

发表于 2003-4-16 07:57:00 | 显示全部楼层

陈老师書中有些例子關於双元表(我用双元表巳把程序改好了)

 楼主| 发表于 2003-4-16 08:05:00 | 显示全部楼层

可否把改好的程序让我看看

这位大侠,可否把改好的程序让我看看,我等急用。谢谢!
 楼主| 发表于 2003-4-16 08:10:00 | 显示全部楼层

可否讲解一下

版主,可否具体讲解怎么使用双元表
 楼主| 发表于 2003-4-16 08:17:00 | 显示全部楼层

哪本书?

陈老师的哪本书有介绍双元表,
把书名告诉我,好让我去看。
发表于 2003-4-16 08:24:00 | 显示全部楼层

先看看以前的討論,不行再說!!查看.....

先看看以前的討論,不行再說!!查看.....
http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&RootID=3278&ID=3352
 楼主| 发表于 2003-4-16 13:03:00 | 显示全部楼层

改进的程序

这是我改进的程序,使用trim时没出问题,但使用erase时出现问题,我要擦除右边的弧线,可老是把左边的弧线给擦掉,而右边的弧线还保留。这是为什么?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
 楼主| 发表于 2003-4-16 13:19:00 | 显示全部楼层

出错的图形

这是出错的图形
 楼主| 发表于 2003-4-16 14:46:00 | 显示全部楼层

出错的图形

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2003-4-17 08:05:00 | 显示全部楼层

程序供參考....

(defun C:DIALJLM (/ HOLDOSMODE HOLDECHO HOLDEDGE)
  (setq HOLDOSMODE (getvar "osmode"))
  (setvar "osmode" 0)
  (setq HOLDECHO (getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setq HOLDEDGE (getvar "edgemode"))
  (setvar "edgemode" 0)
  (DCL_DIALJLM)
  (setvar "osmode" HOLDOSMODE)
  (setvar "edgemode" HOLDEDGE)
  (setvar "cmdecho" HOLDECHO)
  (prin1)
)
(defun DCL_DIALJLM ()
  (setq DCL_ID (load_dialog "dialjlm"))
  (new_dialog "dialjlm" DCL_ID)
  (DEF_DIALJLM)
  (action_tile "popd" "(setq pop 1)(sub_pop $value)")
  (action_tile "kimage1" "(setq ddtype 1)")
  (action_tile "kimage2" "(setq ddtype 2)")
  (action_tile "accept" "(ok_dialjlm)(done_dialog 1)")
  (setq DD (start_dialog))
  (if (= DD 1)
    (DRAW_DIALJLM)
  )
)
(defun DEF_DIALJLM ()
  (set_tile "kd" "12")
  (setq SLDKEY_LIST '("kimage1" "kimage2"))
  (setq SLD_LIST '("dialjlm2" "dialjlm1"))
  (mapcar 'SHOW_SLD SLDKEY_LIST SLD_LIST)
  (setq D_LIST '("12" "16" "20" "24" "30" "36" "42" "48"))
  (SHOW_LIST "popd" D_LIST)
  (setq DDTYPE 1)
  (mode_tile "kimage1" 2)
)
(defun SHOW_LIST (KEY NEWLIST)
  (start_list KEY)
  (mapcar 'add_list NEWLIST)
  (end_list)
)

(defun SUB_POP (VVS)
  (if (= POP 1)
    (set_tile "kd" (nth (atoi VVS) D_LIST))
  )

)

(defun SHOW_SLD        (KEY SLD)
  (setq X (dimx_tile KEY))
  (setq Y (dimy_tile KEY))
  (start_image KEY)
  (fill_image 0 0 X Y -2)
  (slide_image 0 0 X Y SLD)
  (end_image)
)
(defun OK_DIALJLM ()
  (setq D (atof (get_tile "kd")))
)
(defun SUB_CHK_LAYER ()
  (setq CHKLAY (tblsearch "layer" "str"))
  (if (= CHKLAY NIL)
    (command "layer" "n" "str" "c" "7" "str" "")
  )
  (setq CHKLAY (tblsearch "layer" "txt"))
  (if (= CHKLAY NIL)
    (command "layer" "n" "txt" "c" "6" "txt" "")
  )
  (setq CHKLAY (tblsearch "layer" "dim"))
  (if (= CHKLAY NIL)
    (command "layer" "n" "dim" "c" "5" "dim" "")
  )
  (setq CHKLAY (tblsearch "layer" "hat"))
  (if (= CHKLAY NIL)
    (command "layer" "n" "hat" "c" "3" "hat" "")
  )
  (setq CHKLAY (tblsearch "layer" "cen"))
  (if (= CHKLAY NIL)
    (command "layer" "n" "cen" "c" "1" "cen" "lt" "center" "cen" "")
  )
  (setq CHKLAY (tblsearch "layer" "hid"))
  (if (= CHKLAY NIL)
    (command "layer" "n" "hid" "c" "2" "hid" "lt" "hidden" "hid" "")
  )
)
(defun CEN ()
  (command "layer" "s" "cen" "")
)
(defun HID ()
  (command "layer" "s" "hid" "")
)
(defun STR ()
  (command "layer" "s" "str" "")
)
(defun TXT ()
  (command "layer" "s" "txt" "")
)
(defun DIM ()
  (command "layer" "s" "dim" "")
)
(defun HAT ()
  (command "layer" "s" "hat" "")
)
(defun DRAW_DIALJLM (/ R D1 R1 R2)
  (setq R (* 0.5 D))
  (setq D1 (* 0.9 D))
  (setq R1 (* 0.5 D1))
  (cond        ((= D 12) (setq L 40) (setq Q 21.9) (setq S 19))
        ((= D 16) (setq L 50) (setq Q 27.7) (setq S 24))
        ((= D 20) (setq L 60) (setq Q 34.6) (setq S 30))
        ((= D 24) (setq L 75) (setq Q 41.6) (setq S 36))
        ((= D 30) (setq L 90) (setq Q 53.1) (setq S 46))
        ((= D 36) (setq L 110) (setq Q 63.5) (setq S 55))
        ((= D 42) (setq L 130) (setq Q 75) (setq S 65))
        ((= D 48) (setq L 160) (setq Q 85.5) (setq S 75))
        (t (alert "\nd无此值") (exit))
  )
  (setq R2 (- (* 1.5 D) (sqrt (- (* 2.25 D D) (* 0.25 Q Q)))))
  ;;以下依据不同的类别,调用不同的绘图模式
  (cond        ((= DDTYPE 1)
         (setvar "osmode" 0)
         (setq PA (getpoint "请输入基点:"))
         (setq PO1 (polar PA pi 4))
         (setq PO2 (polar PA 0 (+ L 4)))
         (setq PB (polar PA 0 (* 1.5 D)))
         (setq PC (polar PA 0 R2))
         (setq PD (polar PC (/ pi 2) (* 0.25 (+ Q D))))
         (setq PE (polar PA 0 (/ L 2)))
         (setq PX1 (polar PO1 (/ pi 2) (/ D 2)))
         (setq PX2 (polar PE (/ pi 2) (/ D 2)))
         (setq PX3 (polar PO1 (/ pi 2) (/ Q 2)))
         (setq PX4 (polar PE (/ pi 2) (/ Q 2)))
         (setq PX5 (polar PA (/ pi 2) (* 0.25 (+ Q D))))
         (SUB_CHK_LAYER)
         (CEN)
         (command "line" PO1 PO2 "")
         (setq CL1 (entlast))
         (STR)
         (command "line" PX1 PX2 "")
         (setq L1 (entlast))
         (command "line" PX3 PX4 "")
         (setq L2 (entlast))
         (command "line" PA PX5 "")
         (setq L3 (entlast))
         (command "circle" PB (* 1.5 D))
         (setq C1 (entlast))
         (command "circle" PD R2)
         (setq C2 (entlast))
         (command "trim"
                  CL1
                  ""
                  (list C1 (polar PB (* -0.5 pi) (* 40 D)))
                  ""
         )
         (command "trim"
                  L1
                  ""
                  (list C1 (polar PB (* 0.5 pi) (* 40 D)))
                  ""
         )
         (command "trim"
                  C1
                  L2
                  ""
                  (list C2 (polar PD (* -0.5 pi) (* 40 D)))
                  (list C2 (polar PD (* 0.5 pi) (* 40 D)))
                  ""
         )
         (command "trim" C1 "" (list L1 PX1) "")
         (command "trim" C2 "" (list L2 PX3) "")
         (command "mirror" L1 L2 L3 C1 C2 "" PX2 PX4 "")
         (setq SS (ssadd))
         (while        (/= NIL (setq CL1 (entnext CL1)))
           (ssadd CL1 SS)
         )
         (command "mirror" SS "" PA PE "")
        )
        ((= DDTYPE 2)
         (setq PT (getpoint "请输入基点:"))
         (setq PT1 (polar PT pi (* 0.6 D)))
         (setq PT2 (polar PT 0 (* 0.6 D)))
         (setq PT3 (polar PT (/ pi 2) (* 0.6 D)))
         (setq PT4 (polar PT (* 1.5 pi) (* 0.6 D)))
         (setq PT5 (polar PT 0 R))
         (setq PT6 (polar PT (* 1.5 pi) R))
         (SUB_CHK_LAYER)
         (CEN)
         (command "line" PT1 PT2 "")
         (command "line" PT3 PT4 "")
         (HAT)
         (command "arc" "ce" PT PT5 PT6)
         (STR)
         (command "circle" PT R1)
         (command "circle" PT (* 0.5 S))
         (command "polygon" 6 PT "c" (* 0.5 S))
        )
  )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-26 09:53 , Processed in 0.187320 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表