明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: lxqun

有清除屏幕的函数吗

  [复制链接]
 楼主| 发表于 2003-12-23 18:31:00 | 显示全部楼层
哦,真不好意思,呵呵,忘了这回事了
这样吧,那个折线就是边坡了,圆弧就是滑面,折线与滑面有两个交点
这样折线上总共有6个点,从左到右就编号为1,2,3,4,5,6
1:左端点 2:左交点 3:坡脚点 4:坡顶点 5:右交点 6:右端点
还有滑面圆心点就是那道圆弧的圆心了。
谢谢了
发表于 2003-12-23 20:00:00 | 显示全部楼层
只能跟踪到到这里有问题,
(while (< x (car yjd))
    (setq x (+ x tk))
    (setq pt1 (list x y1))
    (setq pt2 (list x y2))
    (if        (< x (car yjd))
      (progn
        (command ".line" pt1 pt2 "")
        (setq ylx (entlast))
        (setq n1 (+ n1 1))
      )
    )
  )
由于if的条件不为真,导致参数ylx为空,后面调用取交点函数是出现错误。。。
由于用的都是全局变量,而且变量太多,因此无法将程序看明白了。。。说说你是要做什么,用CAD的语言来描述。。。
不要出现滑面、坡脚点这些字眼,用直线、圆弧、交点、顶点等字眼描述
 楼主| 发表于 2003-12-24 10:41:00 | 显示全部楼层
看来我的编程习惯真的不行,变量设置的太乱了,很多可以设成局部变量的。
     看到那个圆弧和那条折线的所相交的面积了吗?我要做的是根据用户提供的tk也就是分块的宽度,把这个面积分成一个个条块,分块的原则是这样的:首先要过圆心做一条竖直线与折线和圆弧都相交的,然后以这条竖线为中心往两边分,分到两边的交点也就是最后一个条块就不要求条块宽度是tk了。之所以要有这条中心线,是因为计算时,这条中线的左边的各条块的面积的切向分量要取负值。
     分完块以后,就要求每个条块的面积和偏角。
    偏角是这样的:每个条块的底边不都是圆弧吗,过这个圆弧的中点和圆心可以连一条线,这条线和先前的那条中心线的夹角就是要求的这个条块的偏角了。然后就是用这个条块的面积乘以这个偏角的sin和cos了,然后求和,也就是每个条块的面积的sin的和就是sq,每个条块的面积的cos的和就是sf了。
      在我的程序里,最左边和最右边的面积和偏角我是单独算的,中间部分是通过循环算的,然后我在求偏角时,因为不会找那段圆弧的中点,所以用的条块的上边界的那条线的中点代替的。所以在这里我又画了一条线,得到和圆弧的交点,由于这条线的中点肯定在这个面积内,我又把这个中点作为boundary用的那个内部点了。
      我的程序算出我要的k没问题,但就是有时会出现该删掉的线没删掉的情况。
      再一次感谢你的大力支持,真的很感谢!
发表于 2003-12-24 11:36:00 | 显示全部楼层
那你的TK怎么能给3000或5000呢?
我先看看
 楼主| 发表于 2003-12-24 16:13:00 | 显示全部楼层
我是说放大100倍后,就给3000,5000,如果不放大,当然就是30,50之类的了。
发表于 2003-12-24 16:35:00 | 显示全部楼层
本帖最后由 作者 于 2003-12-24 17:23:48 编辑

我写了一个提取左右两边各自的sq和sf的和,其他计算没有算,你看看结果是否有问题
将此句的注释去掉
(entdel ent_L)

本帖子中包含更多资源

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

x
 楼主| 发表于 2003-12-25 08:55:00 | 显示全部楼层
非常感谢,我下回去看看
 楼主| 发表于 2003-12-25 19:11:00 | 显示全部楼层
看来我的lisp基础实在是太差了,对lisp的这个对于图形数据库的操作的概念很模糊,你写的程序我很难理解的很透彻,特别是前面几个函数sel,com,Sortpt,GetPlinePts我不是很懂,能稍微解说一下吗?
你说要去掉注释的地方,其实没必要去掉,留着更好,我的程序总是在下面还有线没删掉不知道为什么?
我们算的结果很接近,应该是没错的了,你的程序显然要好得多了。我要是能完全消化你的程序,我想我的lisp水平会进步一大截的,呵呵,谢谢你!
发表于 2003-12-26 08:35:00 | 显示全部楼层
你的程序设计思路应该改进一下,对于LISP编程,尽量不要去操作CAD的对象,能用计算的,就先计算,而且不能象你那样,计算一点,做一点,这样的程序对于调试、阅读和修改都会很费劲。。。出错的机会也大。还有就是变量问题,尽量使用局部变量,否则由于变量问题也会产生一些想不到的错误。
对于我的程序,先说说那几个函数,好象没有COM这个函数。。。
sel是一个类似于(entsel)的函数,在本站实用函数里有的,看看使用介绍,
Sortpt 是一个对点按x值进行由小到大或由大到小排序,由第二个参数控制大小,这个函数你看看(vl-sort...)的介绍,应该很容易明白
getplinepts是取得pline上的所有顶点,这个也比较简单,可能你不熟悉member函数,看看这个函数的介绍就容易了。。。

说说这个程序的思路:首先是取圆弧中点,这个其实很容易的,根据几何知识,知道圆弧两个端点,它的中点也肯定是圆心到这两个端点连线的夹角的角平分线,而其实需要的就是这个角平分线的角度,所以就没必要求出这个中点直接得出需要的角度。。。
还有我用了画对象取面积(这里面积我用了ActiveX方法),因为boundary这个命令需要封闭区域,而且经常会出现问题,所以我没有用它。。。
其余部分,应该不难理解了,
 楼主| 发表于 2003-12-26 14:56:00 | 显示全部楼层
这个论坛能有你们这样的热心人,真的是太好了,我会好好把lisp学好的,谢谢
首先我一定要把你这个程序彻底搞懂。
我对grread这个函数不是很懂,虽然看了帮助,对它的那些参数不知道究竟代表什么?
所以后面都看不下去了
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 10:38 , Processed in 0.163403 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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