明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: wb0815

一个关于3d线的问题请大家解决

  [复制链接]
发表于 2004-1-9 17:49:00 | 显示全部楼层
都跟你说了,7楼的是三楼的完善程序,所以3楼会有很多问题,而7楼就少些了,所以你应该使用7楼的程序,
  1. 至于选择方式,你可以自己修改一下,
复制代码

三楼的程序未做出错处理及系统变量处理,只是一个测试的程序,而且如果选择点不在线上,则会出错。。。

用7楼的!!!!!!!!!!!!!!!
 楼主| 发表于 2004-1-9 22:20:00 | 显示全部楼层
是斑竹
可是我试过了用getpoint和getterpoint取出的解过是一样的呀为什么就不行呢
发表于 2004-1-10 11:23:00 | 显示全部楼层
非要写的这么复杂么?
测试下我的代码,我试了几个,反正没问题。
  1. ;曲线在两交点处截断并缩短一定距离 by无痕.2004.1
  2. ;用于 裁减 避让曲线。
  3. (defun c:brklen ()
  4.   (setq os  (getvar "osmode")
  5.         nos (setvar "osmode" 32)
  6.         el  (entsel "\n选则要避让的线条:")
  7.         e1  (car el)
  8.         elast(entlast)
  9.         pt1 (getpoint "\n选则交点1:")
  10.         pt2 (getpoint "\n选则交点2:"))
  11.   (vl-cmdf ".break" e1 "f" pt1 pt2)
  12.   (vl-cmdf ".lengthen" "DE" (- 0 100) (list e1 pt1)  ""
  13.            ".lengthen" "DE" (- 0 100) (list (if (equal (entlast) elast) e1 (entlast)) pt2) "");;if处理封闭曲线;
  14.   (setvar "osmode" os)
  15.   (princ)
  16. )


本帖子中包含更多资源

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

x
发表于 2004-1-10 11:35:00 | 显示全部楼层
无痕发表于2004-1-10 11:23:00非要写的这么复杂么?
测试下我的代码,我试了几个,反正没问题。
;曲线在两交点处截断并缩短一定距离 by无痕.2004.1
;用于 裁减 避让曲线。
(defun c:brklen ()
   (setq os  (getva



你有用"polyline"測試嗎?
我好像都不能用??
发表于 2004-1-10 11:49:00 | 显示全部楼层
7楼主函数这样改,则不需要getinterpoint函数
to:无痕,与我的意思有所不同,我中间的线是保留的,只是打断,不知道楼主要什么样的。。。

  1. (defun c:Brk( / pt1 pt2 pt param1 param2 param ent entv ent2 ent2v)
  2.   (setq errtmp *error*)
  3.   (setq *error* err)
  4.   (setq pt1 (getpoint "\n选择交点一:"))
  5.   (setq pt2 (getpoint "\n选择交点二:"))

  6.   (setq os (getvar "osmode"))
  7.   (setvar "osmode" 0)
  8.   (setvar "cmdecho" 0)
  9.   (prompt "\n选择红线...")
  10.   (setq ent (car (entsel)))
  11.   (setq entv (vlax-ename->vla-object ent))
  12.   (setq param1 (vlax-curve-getParamAtPoint entv pt1))
  13.   (setq param2 (vlax-curve-getParamAtPoint entv pt2))
  14.   (if (< param2 param1)
  15.     (progn
  16.       (setq pt pt2
  17.      pt2 pt1
  18.      pt1 pt)
  19.       (setq param param2
  20.      param2 param1
  21.      param1 param)
  22.     )
  23.   )
  24.   (setq pt1 (vlax-curve-getPointAtDist entv (- (vlax-curve-getDistAtParam entv param1) 0.5)))
  25.   (setq pt2 (vlax-curve-getPointAtDist entv (+ (vlax-curve-getDistAtParam entv param2) 0.5)))
  26.   (setcolor ent 4)
  27.   (setvar "osmode" 0)
  28.   (command "_.break" (list ent pt1) "f" pt1 "@")
  29.   (setcolor (entlast) 1)
  30.   (setq ent2 (entlast))
  31.   (setq ent2v (vlax-ename->vla-object ent2))
  32.   (command "_.break" (list ent2 pt2) "f" pt2 "@")
  33.   (setcolor (entlast) 4)
  34.   (setq *error* errtmp)
  35.   (setvar "osmode" os)
  36.   (princ)
  37. )
 楼主| 发表于 2004-1-10 12:19:00 | 显示全部楼层
无痕 的那种不适合我们用而且不能处理3d线

谢谢斑竹我就要你这个样子的
发表于 2004-1-10 15:49:00 | 显示全部楼层
测试了一下15楼的,有bug

Command: brk
选择交点一:
选择交点二:
选择红线...
Select object: ; 错误: 参数类型错误: numberp: nil

我看前面的程序,好像对选点要求不高,不一定是“交点”,我又测试了一下我的程序在3d下的效果,确实有时候有bug,部分处理错误。因为设置了osmode为32,改为0或者512就好了 。不知楼上是怎么断定我的程序不能处理3d线的。我的操作步骤和me的只是选实体先后次序不同而已,不过你觉得不适合那就没的说了,呵呵。

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 12:43 , Processed in 0.182240 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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