找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 740|回复: 7

[LISP程序]:请教这个程序问题在哪

[复制链接]
发表于 2003-9-10 10:10:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
这个程序在实行时说参数类型错误
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 145个

财富等级: 日进斗金

发表于 2003-9-10 10:25:16 | 显示全部楼层

Re: [LISP程序]:请教这个程序问题在哪

最初由 morecs 发布
[B]这个程序在实行时说参数类型错误 [/B]


最后一句 (command "erase" l1) 在L1后面加上 ""

其他地方你都是计算,不清楚你这个程序做什么,跟大家介绍下吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-10 10:43:00 | 显示全部楼层
一条直线按1.6:0.8的比例,1.6的长度画线,0.8不画,不能选择线形来解决,
   实行时说INTERSECT 所选对象太多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-10 11:22:57 | 显示全部楼层
你这段程序并不能达到你的目的,我把它修改了一下,你试试吧
(defun c:mc(/ l1 l1_data pts p1 pte p2 ang dd n1 n2 po q1 n q2 q3)
(setq ocmde (getvar "cmdecho"))
  (setq oblip (getvar "blipmode"))
  (setq oosmode (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "osmode" 0)
(setq l1 (entsel "\n请选择直线:"))
(setq l1_data (entget (car l1)))
(setq pts (assoc 10 l1_data))
(setq p1 (cdr pts))
(setq pte (assoc 11 l1_data))
(setq p2 (cdr pte))
(setq ang (angle p1 p2))
(setq dd (distance p1 p2))
(setq n1 (rem dd 2.4))
(setq n2 (fix (/ dd 2.4)))
(setq p0 (polar p1 ang n1))
(setq q1 (polar p0 ang n1))
(setq n 1)
(repeat n2
   (setq q2 (polar p0 ang (- (* n 2.4) 1.6)))
   (setq q3 (polar p0 ang (* n 2.4)))
   (command "line" q2 q3 "")
   (setq n (1+ n))
)
(command "line" p1 p0 "")
(command "erase" l1 "")
(setvar "blipmode" oblip)
(setvar "cmdecho" ocmde)
(setvar "osmode" oosmode)
(princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-10 11:30:19 | 显示全部楼层
你的目的, 要求是什么?
(repeat n2  中 n2=0. 如何repeat ?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-10 11:39:39 | 显示全部楼层
能对改动的地方解释一下吗,谢谢liuszll
另外对多条直线操作,怎样改?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2003-9-10 12:04:11 | 显示全部楼层
多条直线的修改:
(下面的程序并不完善,主要是缺少对选择对象的判断,所以选择对象时请只选取直线,选择方法不限。)
(defun c:mc(/ ss nn l1 l1_data pts p1 pte p2 ang dd n1 n2 po q1 n q2 q3)
(setq ocmde (getvar "cmdecho"))
  (setq oblip (getvar "blipmode"))
  (setq oosmode (getvar "osmode"))
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "osmode" 0)
(setq ss (ssget))
(setq nn 0)
(repeat (sslength ss)
(setq l1 (ssname ss nn))
(setq l1_data (entget l1))
(setq pts (assoc 10 l1_data))
(setq p1 (cdr pts))
(setq pte (assoc 11 l1_data))
(setq p2 (cdr pte))
(setq ang (angle p1 p2))
(setq dd (distance p1 p2))
(setq n1 (rem dd 2.4))
(setq n2 (fix (/ dd 2.4)))
(setq p0 (polar p1 ang n1))
(setq q1 (polar p0 ang n1))
(setq n 1)
(repeat n2
   (setq q2 (polar p0 ang (- (* n 2.4) 1.6)))
   (setq q3 (polar p0 ang (* n 2.4)))
   (command "line" q2 q3 "")
   (setq n (1+ n))
)
(command "line" p1 p0 "")
(command "erase" l1 "")
(setq nn (1+ nn))
)
(setq ss nil)
(setvar "blipmode" oblip)
(setvar "cmdecho" ocmde)
(setvar "osmode" oosmode)
(princ)
)
另:编这类程序我一般采用--画图法,如这个问题,我先画一条直线,然后标上各个点及其距离,然后对着图分析。虽说笨一点,但不容易出错。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2003-9-10 12:49:16 | 显示全部楼层
下面可以搞定,但类似的情况,直线换为椭圆怎样计算


  1. (defun c:mc (/ ss nn l1 l1_data pts p1 pte p2 ang dd n1 n2 po q1 n q2 q3)
  2.   (setq ocmde (getvar "cmdecho"))
  3.   (setq oblip (getvar "blipmode"))
  4.   (setq oosmode (getvar "osmode"))
  5.   (setvar "cmdecho" 0)
  6.   (setvar "blipmode" 0)
  7.   (setvar "osmode" 0)
  8.   (setq ss (ssget '((0 . "LINE"))))    ; 改这里就可
  9.   (setq nn 0)
  10.   (repeat (sslength ss)
  11.     (setq l1 (ssname ss nn))
  12.     (setq l1_data (entget l1))
  13.     (setq pts (assoc 10 l1_data))
  14.     (setq p1 (cdr pts))
  15.     (setq pte (assoc 11 l1_data))
  16.     (setq p2 (cdr pte))
  17.     (setq ang (angle p1 p2))
  18.     (setq dd (distance p1 p2))
  19.     (setq n1 (rem dd 2.4))
  20.     (setq n2 (fix (/ dd 2.4)))
  21.     (setq p0 (polar p1 ang n1))
  22.     (setq q1 (polar p0 ang n1))
  23.     (setq n 1)
  24.     (repeat n2
  25.       (setq q2 (polar p0 ang (- (* n 2.4) 1.6)))
  26.       (setq q3 (polar p0 ang (* n 2.4)))
  27.       (command "line" q2 q3 "")
  28.       (setq n (1+ n))
  29.     )
  30.     (command "line" p1 p0 "")
  31.     (command "erase" l1 "")
  32.     (setq nn (1+ nn))
  33.   )
  34.   (setq ss nil)
  35.   (setvar "blipmode" oblip)
  36.   (setvar "cmdecho" ocmde)
  37.   (setvar "osmode" oosmode)
  38.   (princ)
  39. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-26 19:01 , Processed in 0.404374 second(s), 47 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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