明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2441|回复: 17

[LISP群(1)] 2013-11-04 明经 AutoLISP 编程(102918348) 群聊记录:可以的,但是算法难度较大。一个不太靠谱的算法是:计算每个图形的外包矩形,然后

 关闭 [复制链接]
发表于 2013-11-4 08:12 | 显示全部楼层 |阅读模式
[NJZX05]剑无锋 08:12:04
可以的,但是算法难度较大。一个不太靠谱的算法是:计算每个图形的外包矩形,然后试着横向排一组,并计算试排的横向长度,余下的试排长度和尽量接近第一次试排的结果,经过多次重复后,找最总外包面积最小的一个试排方案,并移动。
但这个方案,对于图元之间围成的小空间内不能布图,是个问题
[NJZX05]剑无锋 08:14:37
为了得到正确的算法,我试过将图元按多边形外包转换后,将所有的外包多边形按顶点连成网络,重新计算得到更多的多边形,然后再消形,可是没有成功
 楼主| 发表于 2013-11-4 09:30 | 显示全部楼层
[Sign88]宁波标志 09:30:55
算角度 可能可以的吧
[NJZX05]剑无锋 09:37:24
试试看,可能是我考虑的还不够深,如果你搞好了,发我们共同学习一下
[szx025][szx025]aaaa 09:41:21
(command"_ERASE"(ssget"X" "WP" pts)"");;pts为你那四个坐标点的点表,这个有点不明白,有高手详细说一下吗,比如我已经定义了四个点pt1 pt2 pt3 pt4,如何用上面的语句完成删除四个点范围的物体,
[NJZX05]剑无锋 09:45:19
(setq pts (list t1 t2 t3 t4))
[NJZX05]剑无锋 09:45:55
还明白了?
再不明白的话,去看函数参考吧
[szx025][szx025]aaaa 09:47:55
谢谢
[夏生生][x_s_s_1]生无可恋 09:56:29
ssget"X"已经全选了吧,后面的点表还有用吗?
[NJZX05]剑无锋 10:00:03
最近在写一些东西,结果回头时发现,所有的一切,都是要先定义对象,也就是先定义数据结构和该数据结构上的一组操作,否则真是寸步难行。如果不照这样玩的话,CAD会让你死得很难堪。最早开始出现的错误,是涉及点这个对象的,谁能想到即使这个小小的对象,都会让人疯掉,你可不要指望用等于号来直接判断这些数据是否相等,可能在我们肉眼看来是相等的东西,结果一判断就是不等的,不信你们玩玩看吧,必须要有与相应的数据结构相对的判断函数才能正确判断,否则哪怕是点也不行
[夏生生][x_s_s_1]生无可恋 10:00:50
看你要判断啥
[NJZX05]剑无锋 10:02:24
这类错误,在CAD里有时候很隐蔽,如果不分析那些被我们认为是基本数据结构的东西,而直接用LISP的判断函数,可能从算法上怎么都找不出问题所在
[NJZX05]剑无锋 10:03:30
(equal SPt DPt)看似没问题吧,错了,(equal SPt DPt Fuzz)才行!
[NJZX05]剑无锋 10:05:40
(equal SLINE DLINE)看似没问题吧,错的更离谱了
[夏生生][x_s_s_1]生无可恋 10:05:46
fuzz是容差好不好
[szx025][szx025]aaaa 10:06:18
(setq p1 (polar pt1 ang1 100))
  (setq p2 (polar pt2 ang1 100))
  (setq p3 (polar pt2 ang1 1000))
  (setq p4 (polar pt1 ang1 1000))
  (setq pts (list 4)) 
  (command"_ERASE"(ssget"X" "WP" pts)"")这样写为啥不对
[NJZX05]剑无锋 10:06:31
呵呵,这里只是给大家提个醒,免得大家再跟我吃同样的亏
[szx025][szx025]aaaa 10:06:39
错误: 错误的点参数
[夏生生][x_s_s_1]生无可恋 10:06:43
(command"_ERASE"(ssget "WP" pts)"")
刚刚前面和你说了啊
[szx025][szx025]aaaa 10:07:38
我按你说的写的啊
[夏生生][x_s_s_1]生无可恋 10:07:54
[qqimg]201311/{3FF6C85F-C1C8-F84F-CB2D-11EDA76F572C}.jpg[/qqimg]
[NJZX05]剑无锋 10:08:09
走了,老板安排出差了
 楼主| 发表于 2013-11-4 10:24 | 显示全部楼层
[野狼谷]笨鸟 10:24:30
[NJZX05]剑无锋(93948511)  10:03:45

你研究的是不是太深入了,如果用lisp进行一般的绘图,查询,修改,统计等功能,是不会碰到这些问题的
 楼主| 发表于 2013-11-4 10:52 | 显示全部楼层
[cvbnm8888] 男人 10:52:43
继续求教,cass定义的命令,可以直接用command命令调用,自己定义的函数,如何才能使用command直接调用??
[【KAIXIN】] [【KAIXIN】]炫翔 10:53:18
不可以
直接 DEFUN
[cvbnm8888] 男人 10:53:50
不能用command调用?
[hawnn]hawnn 10:57:53
已定义的
直接用(C:xxx)
带的用(C:XXX)
不带C:的(XXX)
[q3_2006]q2 11:02:15
ET命令如何在程序中调用,如:EXTRIM OVERKILL。。。。拜托高手指点,谢谢!
 楼主| 发表于 2013-11-4 11:16 | 显示全部楼层
[Casa小宝]Cas 11:16:22
(load "overkillsup")
 (acet-overkill2 (list ss 0.001 nil nil T nil nil))
[cvbnm8888] 男人 11:17:29
已经用defun定义好的函数
但是需要传递参数怎么处理?
比如 c:j
然后命令提示选择
输入1
调用命令以后,参数1如何传递给函数使用?
[davide]醒 11:19:15
请问可以读取设计中心中的指定文件中的块不
[xiaomm250][lisp_](car (entsel)) 11:23:09
[qqimg]201311/{3A13A748-F554-42C5-AE30-6D775BA4F48D}.jpg[/qqimg]
这句话什么意思?
[q3_2006]q2 11:28:29
[@604843129,@[Casa小宝]Cas] 似乎不行呀。。
 楼主| 发表于 2013-11-4 11:41 | 显示全部楼层
[Casa小宝]Cas 11:41:31
安装了et没?
[q3_2006]q2 11:41:58
当然
[Casa小宝]Cas 11:42:11
提示什么错误?
[q3_2006]q2 11:42:15
还是提示选择。。
不认。。ss
[Casa小宝]Cas 11:42:27
那将ss改为(ssget)
 楼主| 发表于 2013-11-4 12:03 | 显示全部楼层
[野狼谷]笨鸟 12:03:58
(setq ent (cdr (car(entget(car(entsel))))))

;;自定义函数-获取多段线顶点坐标表

  (setq    ptlist (vlax-safearray->list
         (variant-value
           (vla-get-coordinates (vlax-ename->vla-object ent))
         )
           )
  )
求助,能不能不用vlax 用autolisp获取pline坐标的函数?
[野狼谷]笨鸟 12:04:30
上面这个调用 错误: ActiveX 服务器返回错误: 未知名称: 
Coordinates
[野狼谷]笨鸟 12:06:12
((-1 . )
  (0 . "LWPOLYLINE")
  (5 . "1DD27B")
  (102 . "{ACAD_XDICTIONARY")
  (360 . )
  (102 . "}")
  (330 . )
  (100 . "AcDbEntity")
  (67 . 0)
  (410 . "Model")
  (8 . "主要")
  (100 . "AcDbPolyline")
  (90 . 4)
  (70 . 0)
  (38 . 0.0)
  (39 . 0.0)
  (10 -4917.59 -1914.7)
  (40 . 1.0)
  (41 . 1.0)
  (42 . 0.0)
  (10 -2038.26 -1914.7)
  (40 . 1.0)
  (41 . 1.0)
  (42 . 0.0)
  (10 -2038.26 -619.818)
  (40 . 1.0)
  (41 . 1.0)
  (42 . 0.0)
  (10 1986.76 -619.818)
  (40 . 0.0)
  (41 . 0.0)
  (42 . 0.0)
  (210 0.0 0.0 1.0)
)
坐标组码都是10
 楼主| 发表于 2013-11-4 12:35 | 显示全部楼层
[q3_2006]q2 12:35:02
(Vlax-Get (Vlax-Ename->Vla-Object (car (entsel))) 'Coordinates )
 楼主| 发表于 2013-11-4 12:45 | 显示全部楼层
[野狼谷]笨鸟 12:45:22
我试试看,最近换了个电脑,不知道为啥就访问不了,
[q3_2006]q2 12:46:00
把电脑整好才对。。
[野狼谷]笨鸟 12:46:04
单独一行行运行可以访问ActiveX服务器,装在函数里访问就出错
关键是不知道整哪里啊
cad都重装好几回了
[q3_2006]q2 12:46:35
不清楚。。太高深,不懂
 楼主| 发表于 2013-11-4 13:07 | 显示全部楼层
[why1025][7299969]人生 13:07:58
完整的获取多线段顶点的函数有吗
[q3_2006]q2 13:12:57
什么叫完整??
[why1025][7299969]人生 13:13:53
就是真个函数的代码
[q3_2006]q2 13:14:21
上面的是完整的呀。。
[why1025][7299969]人生 13:14:40
[qqimg]201311/{7E68B134-D0E3-8102-F656-E31CB4BDA4EE}.jpg[/qqimg]
这个是吗
[q3_2006]q2 13:15:13
最后一(defun ptget (en /  ptlist )
  (setq ptlist nil)
  (foreach n (entget en)
    (if    (= 10 (car n))
      (setq ptlist (cons (cdr n) ptlist))
    )
  )
  ptlist
(reverse ptlist)
)
[why1025][7299969]人生 13:15:48
哦,谢谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 06:39 , Processed in 0.672728 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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