明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: wb0815

疑难问题急待解决请教各位斑竹(谢谢了)

  [复制链接]
发表于 2003-11-19 10:15:00 | 显示全部楼层
wb0815发表于2003-11-17 19:09:00谢谢斑竹刚才我没注意这个地方。应该存在这种情况,只能根据最近点来找了。那幅图的矛盾点如何来判断的呢。
请斑竹帮忙修改一下22楼这个3dpoly的连线程序。对线的方向要求很严如何能不考虑线



你有能力寫而又不寫,我不太認同。
思路:
1.用條件SSGET選取3DPOLY
2.建立表如:
(<物件> <起點> <終點>)
((<圖元名稱: 7ef89c90> (-2114.12 2153.28 0.0) (-1875.6 2244.92 0.0))
(<圖元名稱: 7ef89c48> (-1875.6 2244.92 0.0) (-1975.82 2244.92 -61.0967))
(<圖元名稱: 7ef89c00> (-2201.91 2382.68 0.0) (-2232.88 2287.37 -61.0967))
(<圖元名稱: 7ef89b80> (-2188.46 2127.52 0.0) (-2201.91 2382.68 0.0)))
3.遍歷選集找出端點連接的線,利用原3DPOLY連接程序連接兩線
4.新的3DPOLY(<物件> <起點> <終點>)再遍歷選集找出端點連接的線
5.重覆動作
6.在遍歷時當然要把用過的物件除表中去除,加快程序執
 楼主| 发表于 2003-11-20 08:55:00 | 显示全部楼层
to 龙龙仔

我承认我可以写出来,可就是方法不是很好,你能否看一下我写的那个程序对线的方向有要求

如何能够不要求线段的方向呢?

还有一根线就要搜索全图线能否接完线后改换颜色这样的话,数据量会减少很多。这样可以吗

因为我刚开始学的时候就是看一些源代码而学会lisp程序的所以又很多坏毛病。(如用全局变量而不是局域变量求完后变量的值不清空。请问斑竹如何有更好的方法帮助我纠正这些错误呢。
发表于 2003-11-20 10:30:00 | 显示全部楼层
1.我写的那个程序对线的方向有要求,如何能够不要求线段的方向呢?
>>线段的方向不过只有4种,那是必需的。

2.一根线就要搜索全图线
>>在遍历选集表时,只要找到有连接的线就跳出程序,相信也不会太花时间,当然要把用过的对象从选集表去除,加快程序执行。

3.很多坏毛病。
>>知道了还不能改吗?

;;你那程序实在……..看不下去!
;;其实连接两根3DPOLY提供你思路时就写好了。
;;同样多条3DPOLY连接也完成。
;;只是希望你能独立完成!
 楼主| 发表于 2003-11-20 14:19:00 | 显示全部楼层
to 龙龙仔

我的程序为什么您看不下去呀,方向还是要管的我知道了。

您写好了我相信,我也知道这是您锻炼我的动手能力。

谢谢你我想我不应该找捷径了

因为我的错误已经根深蒂固了能否帮忙改正一下
发表于 2003-11-20 16:51:00 | 显示全部楼层

  1. ;;假设S1 & S2 为3DPOLY & NOT CLOSED
  2. ;;Usage: (LX (car (entsel)) (car (entsel)))
  3. ;;改一下跟重写一样
  4. (defun LX (S1 S2 / PT_L L_L1 L_L2)

  5. ;;只保留了下列
  6. ;;------------------------------------------------------------------
  7.   (defun 3DLIST        (ENTNAME / CBIAO BIA ENTNAME LORPL)
  8.     (setq LORPL NIL)
  9.     (while (/= LORPL "SEQEND")
  10.       (setq ENTNAME (entnext ENTNAME))
  11.       (setq BIA (entget ENTNAME))
  12.       (setq LORPL (cdr (assoc 0 BIA)))
  13.       (if (/= LORPL "SEQEND")
  14.         (setq CBIAO (cons (cdr (assoc 10 BIA)) CBIAO))
  15.       )
  16.     )
  17.     CBIAO
  18.   )
  19.   (defun DO_IT1 (PT_L / PP)
  20.     (command "3dpoly")
  21.     (foreach PP PT_L (command PP))
  22.     (command)
  23.     (command "_.erase" S1 S2 "")
  24.   )
  25. ;;-------------------------------------------------------------------

  26.   (if (not (equal S1 S2))
  27.     (progn
  28.       (setq L_L1 (3DLIST S1))
  29.       (setq L_L2 (3DLIST S2))
  30.       (cond
  31.         ((equal (last L_L1) (last L_L2))
  32.          (setq
  33.            PT_L        (append (reverse (cdr (reverse L_L1))) (reverse L_L2))
  34.          )
  35.          (DO_IT1 PT_L)
  36.         )
  37.         ((equal (car L_L1) (last L_L2))
  38.          (setq PT_L (append (reverse (cdr L_L1)) (reverse L_L2)))
  39.          (DO_IT1 PT_L)
  40.         )
  41.         ((equal (car L_L1) (car L_L2))
  42.          (setq PT_L (append (reverse L_L1) (cdr L_L2)))
  43.          (DO_IT1 PT_L)
  44.         )
  45.         ((equal (last L_L1) (car L_L2))
  46.          (setq PT_L (append L_L1 (cdr L_L2)))
  47.          (DO_IT1 PT_L)
  48.         )
  49.       )
  50.     )
  51.   )
  52.    (princ)
  53. )
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 06:41 , Processed in 0.164610 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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