tm20038175 发表于 2012-4-14 22:25:05

已知半径,求作过一点和一直线相切的圆?

已知一点,半径,切线,求作圆~~~~

tm20038175 发表于 2012-4-14 22:26:02

如果可以的话,求作与两条曲线相切,半径已知的圆

xyp1964 发表于 2012-4-14 22:50:24

ttr方式

Saging 发表于 2012-4-14 23:01:59

(defun c:ac(/ point p1 p2 line r ci li obj1 obj2 ints lst-u-bound cp)
(setq point (getpoint "\n请输入点:"))
(command "point" point)
(setq p1 (getpoint"\n画直线:")
p2 (getpoint p1))
(command "line" p1 p2 "")
(setq line (entlast))
(setq r (getreal "\n请输入半径:"))
(command "circle" point r)
(setq ci (entlast))
(command "offset" r line point "")
(setq li (entlast))
(setq obj1 (vlax-ename->vla-object li))
(setq obj2 (vlax-ename->vla-object ci))
(setq ints (vlax-invoke-method obj1 'intersectwith obj2 0))
(if (/= ints nil)
    (progn
      (setq lst-u-bound (vlax-safearray-get-u-bound (vlax-variant-value ints)1))
      (if lst-u-bound
(setq ints (vlax-safearray->list (vlax-variant-value ints))))
      )
    (quit)
    )
(setq cp (list (car ints) (cadr ints) (caddr ints)))
(command "erase" ci "")
(command "erase" li "")
(command "circle" cp r)
(princ)
)

tm20038175 发表于 2012-4-14 23:35:05

Saging 发表于 2012-4-14 23:01
(defun c:ac(/ point p1 p2 line r ci li obj1 obj2 ints lst-u-bound cp)
(setq point (getpoint "\n请 ...

谢谢啦,这么晚还帮忙写程序,真太感谢了。。
二楼还有个程序,如果高手们空闲时候,希望能帮忙写一下。。。

cabinsummer 发表于 2012-4-15 06:39:44

楼主的问题用cad命令实现更简单。二楼的问题已在三楼回答

tm20038175 发表于 2012-4-15 08:15:59

cabinsummer 发表于 2012-4-15 06:39
楼主的问题用cad命令实现更简单。二楼的问题已在三楼回答

用相切,相切,半径的办法是可以解决一些问题,但是对于一些点距离很段的多线段或样条曲线,是有误差的,碰到这种情况,也只能老老实实的偏移,偏移,半径做。我的专业这种很密集的多线段和样条曲线很多,所以想用命令来解决。

xyp1964 发表于 2012-4-15 10:32:49

问题说不清楚就上个示意图吧

tm20038175 发表于 2012-4-15 10:48:15

就是实现这样的功能呀:
1,选择第一条相切的曲线
2,选择第二条相切的曲线
3,请输入园的半径r
4,作出与两条曲线相切,半径为r的园

xyp1964 发表于 2012-4-15 10:57:41

本帖最后由 xyp1964 于 2012-4-15 10:58 编辑

acad的标准命令
(command "circle" "ttr" )
页: [1] 2
查看完整版本: 已知半径,求作过一点和一直线相切的圆?