明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1371|回复: 10

[讨论] 关于圆弧

[复制链接]
发表于 2015-3-25 23:30 | 显示全部楼层 |阅读模式
见附件中圆弧,3D转出的图纸里,经常有这种乱七八糟的圆弧。不在一个平面上,基本上是用手工重新
画一个,以前,想将210变成 0 0 0 ,(assoc 10 x y z)的Z值变成0,发现居然位置,不知道跑到什么爪哇岛去了。
请高手支招。谢谢

本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2015-3-25 23:30 | 显示全部楼层
主要是线割加工时,这种圆弧不能用。
发表于 2015-3-26 08:34 | 显示全部楼层
发表于 2015-3-26 09:30 | 显示全部楼层
210组码默认为0,0,-1,是指挤出方向,一般不用改的
 楼主| 发表于 2015-3-27 00:14 | 显示全部楼层
机械加工中就有很多问题的。
发表于 2015-3-27 15:26 | 显示全部楼层
是不是210 的 0 0 -1 把-1改成正1
发表于 2015-3-27 20:59 | 显示全部楼层
也许可以试试 vlax-curve-getClosestPointToProjection 函数
发表于 2015-3-27 22:02 来自手机 | 显示全部楼层
获取投影曲线
 楼主| 发表于 2015-3-27 22:42 | 显示全部楼层
(DEFUN C:ac1 ()
  (SETQ SS1 NIL)
  (setvar "osmode" 0)
  (setq ss1 (ssget (list (cons 0 "ARC"))))
  (if ss1
    (PROGN
      (SETQ EMAX NIL
            COUNT 0
      )
      (setq emax (sslength ss1))
      (while (< count emax)
        (setq EN (ssname ss1 COUNT)
              ED (ENTGET EN)
        )
        (if (= (setq ls (last (assoc 210 ed))) 1)
          (SETQ
            LS
             (list (cons 0 "circle")
                   (cons 8 "ok")
                   (list 10 (cadr (assoc 10 ed)) (caddr (assoc 10 ed)))
                   (CONS 62 222)
                   (CONS 40 (CDR (assoc 40 ed)))
             )
          )
          (SETQ
            LS (list (cons 0 "circle")
                     (cons 8 "ok")
                     (list 10
                           (- 0 (cadr (assoc 10 ed)))
                           (caddr (assoc 10 ed))
                     )
                     (CONS 62 222)
                     (CONS 40 (CDR (assoc 40 ed)))
               )
          )
        )
        (COMMAND
          "._ARC"
          "C"
          (TRANS (CDR (ASSOC 10 LS)) 0 1)
          (TRANS (vlax-curve-getendpoint (VLAX-Ename->VLA-Object EN))
                 0
                 1
          )
          (TRANS
            (vlax-curve-getstartpoint (VLAX-Ename->VLA-Object EN))
            0
            1
          )
        )
        (redraw (entlast) 3)
        (setq str nil)
        (setq
          str (getstring "\n 生成的弧方向正确否?(回车或空格表示ok!)")
        )

        (if (/= "" (strcase str))
          (progn
            (entdel (entlast))
            (COMMAND
              "._ARC"
              "C"
              (TRANS (CDR (ASSOC 10 LS)) 0 1)

              (TRANS
                (vlax-curve-getstartpoint (VLAX-Ename->VLA-Object EN))
                0
                1
              )
              (TRANS (vlax-curve-getendpoint (VLAX-Ename->VLA-Object EN))
                     0
                     1
              )
            )
          )
        )
        (entdel en)

        (SETQ COUNT (1+ COUNT))
        (setq ename nil)
      )                                        ;WHILE
    )                                        ;FIRST OF PROGN
    (PROMPT "\n 未选取到 Arc实体,请重新选择!<circle>")
  )
  (setq en nil)
  (princ)
)
 楼主| 发表于 2015-3-27 22:43 | 显示全部楼层
昨晚写的,有些啰嗦.看起来似乎可用
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-27 07:36 , Processed in 0.210855 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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