找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 900|回复: 10

[求助] 想定义一个点,求指导

[复制链接]
发表于 2016-8-21 17:16:44 | 显示全部楼层 |阅读模式

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

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

×
(setq fx (* 1.5 pi))
(setq pt3 (polar p fx (* 2 r)))
想在一个圆的正下方定义一个点。其中p圆心点,pt3为要义的那个点。
这段代码在一个完整程序里面摘下来的,程序在cad上运行老是报错
错误: *error* 函数中出错AutoCAD 变量设置被拒绝: "blipmode" nil
请问问题出在哪里?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2016-8-21 18:16:25 | 显示全部楼层
(setq bb(tt(car(entsel))));这个是使用方法
(defun tt(ename / r p pt3)
  (vl-load-com)
  (if (= (type ename) 'ename)
    (if (= (cdr(assoc 0 (entget ename))) "CIRCLE")
      (progn
        (setq r(vla-get-radius (vlax-ename->vla-object ename)))
        (setq p(cdr(assoc 10 (entget ename))))
        (setq pt3(polar p (* 1.5 pi) (* 2. r))))
      "不是圆"
      )
    "不是图元名"
    )
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2016-8-22 22:03:22 | 显示全部楼层
楼主呀,能不能用你倒是说句话呀
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-23 15:05:35 | 显示全部楼层
954220086 发表于 2016-8-22 22:03
楼主呀,能不能用你倒是说句话呀

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

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2016-8-23 15:34:26 | 显示全部楼层
这两句代码仅是p和r没有赋值,不是出错的根源。
看提示,应该是自定义的*error*(出错函数,在“(defun *error*()...)”部分)中关于Blipmode系统变量没有初始值的问题。这是一个关于屏幕标记的变量,acad升级过程中,这个变量的使用方式有少许调整,但现在已经基本被摒弃,所以一般情况下,可以把关于这个变量的一句直接删除。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2016-8-23 15:40:01 | 显示全部楼层
这两句代码仅是p和r没有赋值,不是出错的根源。
看提示,应该是自定义的*error*(出错函数,在“(defun *error*()...)”部分)中关于Blipmode系统变量没有初始值的问题。这是一个关于屏幕标记的变量,acad升级过程中,这个变量的使用方式有少许调整,但现在已经基本被摒弃,所以一般情况下,可以把关于这个变量的一句直接删除。

点评

你好,我将程序全部贴出,麻烦你帮我看看, (defun c:FDD(/ e p pc k r n ep) (setq v1(getvar "osmode")) (setq v2(getvar "blipmode")) (setq v3(getvar "cmdecho")) (setvar "cmdecho" 0) (setva  详情 回复 发表于 2016-8-23 21:05

评分

参与人数 1D豆 +5 收起 理由
newer + 5 热心帮忙奖!

查看全部评分

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2016-8-23 16:21:33 | 显示全部楼层
你看看 代码, 找到 (setq *error* ...........) 部分,把error定义的函数贴出来看下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-23 21:05:27 | 显示全部楼层
本帖最后由 行雲 于 2016-8-23 21:10 编辑
ll_j 发表于 2016-8-23 15:40
这两句代码仅是p和r没有赋值,不是出错的根源。
看提示,应该是自定义的*error*(出错函数,在“(defun *e ...

你好,我将程序全部贴出,麻烦你帮我看看,
(defun c:FDD(/ e p pc k r n ep)
  (setq v1(getvar "osmode"))
  (setq v2(getvar "blipmode"))
  (setq v3(getvar "cmdecho"))
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "osmode" 0)
  (princ "\n选择圆:")
  (setq e(car(entsel))
pc(cdr(assoc 10 (entget e)))
xl(getstring"\n序列号:")
p(getpoint"\n放置点:")
k(getreal"\n比例:")
r(cdr(assoc 40(entget e)))
)
  (command "COPY" "CP")
  (setq n 0)
  (repeat 180
    (command (polar pc (/ (* 2 n pi)180) r))
    (setq n(+ n 1))
    )
  (command "" "" pc p)
  (setq n 0)
  (setvar "PICKBOX" 5)
  (command "ZOOM" "C" p (* 3 r))
  (command "CIRCLE" p r)
  (setq ep(entlast))
  (command "TRIM" ep "")
  (repeat 180
    (command "F" (polar p (/ (* 2 n pi)180) (* r 1.01)))
    (setq n(+ n 1))
    (command (polar p (/ (* 2 n pi)180) (* r 1.01)) "")
    )
  (command "" "ZOOM" "P")
  (command "SCALE" "C" (list (- (car p) r) (- (cadr p) r))
    (list (+ (car p) r) (+ (cadr p)r)) "" p k)
  (command "ERASE" ep "")
  (command "REDRAW")

  (setq oldfac (getvar "dimlfac"))
  (SETVAR "DIMLFAC" (/ oldfac sc))

;;;;;就是接上面程序给定的放置点p,在放大圆了的圆下面,六点钟下面定义一个文本定位点
  (setq bd (* 1.5 pi))
  (setq pt3 (polar p bd (*(* 1.2 r)k)))  ;;270度角位乘以圆半径 r   再乘以放大比k
  (setq knr (strcat "SCALE " (RTOS factor 2 0) ":1"))
  (command "text" "j" "c" pt3 (getvar "dimtxt") 0 knr)

  (setvar "osmode" v1)
  (setvar "blipmode" v2)
  (setvar "cmdecho" v3)
  (princ)
  )

点评

这个地方,SC是NIL, 前面也没看到赋值,SC是什么?  详情 回复 发表于 2016-8-23 21:42
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-8-23 21:42:00 | 显示全部楼层
行雲 发表于 2016-8-23 21:05
你好,我将程序全部贴出,麻烦你帮我看看,
(defun c:FDD(/ e p pc k r n ep)
  (setq v1(getvar "osmo ...

  1. (SETVAR "DIMLFAC" (/ oldfac sc))


这个地方,SC是NIL, 前面也没看到赋值,SC是什么?

点评

谢谢指出,那辆行是尺寸测量比例因子的,没动做,,,暂时放在那里先的。现在问题集中在哪个pt3点上,程序报错,,,其实这程序刚开始是可以得,可以标出那行文本的,后来又不行了,非常奇怪  详情 回复 发表于 2016-8-24 14:59
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-24 14:59:46 | 显示全部楼层
newer 发表于 2016-8-23 21:42
这个地方,SC是NIL, 前面也没看到赋值,SC是什么?

谢谢指出,那辆行是尺寸测量比例因子的,没动做,,,暂时放在那里先的。现在问题集中在哪个pt3点上,程序报错,,,其实这程序刚开始是可以得,可以标出那行文本的,后来又不行了,非常奇怪

点评

我贴出来问你,就是说程序执行到这个地方了,报错。在这个SC之前没报错,上面的都通过了。 你多加几行打印语句分开,看看执行到哪里出错,然后看下变量值是否是正确的。  详情 回复 发表于 2016-8-24 15:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-8-24 15:04:41 | 显示全部楼层
行雲 发表于 2016-8-24 14:59
谢谢指出,那辆行是尺寸测量比例因子的,没动做,,,暂时放在那里先的。现在问题集中在哪个pt3点上,程 ...

我贴出来问你,就是说程序执行到这个地方了,报错。在这个SC之前没报错,上面的都通过了。

你多加几行打印语句分开,看看执行到哪里出错,然后看下变量值是否是正确的。

点评

我是个菜鸟,还不懂什么事打印语句,平常编辑都是直接在记事本上编辑的。 那两行是后面加上去的,目的是想调整尺寸标注。即便现在删去那两行,程序还是照样不行。 或者,你有么更更好的办法,定义那个点?以圆心为  详情 回复 发表于 2016-8-24 15:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-24 15:04:48 | 显示全部楼层
前面也没看到赋值,就是这个点p(getpoint"\n放置点:")会有问题吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-8-24 15:55:24 | 显示全部楼层
newer 发表于 2016-8-24 15:04
我贴出来问你,就是说程序执行到这个地方了,报错。在这个SC之前没报错,上面的都通过了。

你多加几行 ...

我是个菜鸟,还不懂什么事打印语句,平常编辑都是直接在记事本上编辑的。
那两行是后面加上去的,目的是想调整尺寸标注。即便现在删去那两行,程序还是照样不行。
或者,你有么更更好的办法,定义那个点?以圆心为基准,在圆外,6点钟下面定义一个点,谢谢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-8-24 16:12:43 | 显示全部楼层
行雲 发表于 2016-8-24 15:55
我是个菜鸟,还不懂什么事打印语句,平常编辑都是直接在记事本上编辑的。
那两行是后面加上去的,目的是 ...

你在 适当的位置加上

(pirnc "\n1111111111111")
......

....
(pirnc "\n222222222222")
.....
(pirnc "\n333333333333333")

----
如果你在屏幕上看到 22222222222222, 没看到 3333333333333333, 说明你的代码在222222222----3333333333333中间有问题了,你精力就放在这之间的代码查看下哪些变量值是错误的了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2016-8-24 16:14:00 | 显示全部楼层
行雲 发表于 2016-8-24 15:55
我是个菜鸟,还不懂什么事打印语句,平常编辑都是直接在记事本上编辑的。
那两行是后面加上去的,目的是 ...

你在 适当的位置加上

(pirnc "\n1111111111111")
......

....
(pirnc "\n222222222222")
.....
(pirnc "\n333333333333333")

----
如果你在屏幕上看到 22222222222222, 没看到 3333333333333333, 说明你的代码在222222222----3333333333333中间有问题了,你精力就放在这之间的代码查看下哪些变量值是错误的了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 10:22 , Processed in 0.221897 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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