明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2596|回复: 21

[LISP群(1)] 2013-07-15 明经 AutoLISP 编程(102918348) 群聊记录:[face13.gif]晚点就中了

 关闭 [复制链接]
发表于 2013-7-15 00:09:27 | 显示全部楼层 |阅读模式
[T_T]13郎 00:09:27
晚点就中了
[T_T]13郎 00:13:59
搞个LSP.来算机率!
[流动的清泉][权心权意] 00:18:06
现在还有人没有睡了
[T_T]13郎 00:19:03
用的CAD的很多都可能未
[流动的清泉][权心权意] 00:19:15
我最多的时候有中了6个数
[T_T]13郎 00:19:31
[流动的清泉][权心权意] 00:19:50
呵呵
[T_T]13郎 00:20:01
你出多,还是入多?
[流动的清泉][权心权意] 00:20:37
肯定是出多啊
[T_T]13郎 00:21:07
那6个球,害了你
[流动的清泉][权心权意] 00:21:10
彩票只有中大奖,不然肯定是亏
买的玩下,
[流动的清泉][权心权意] 00:22:09
5个的也中了不少
[T_T]13郎 00:23:02
听人说,搞球不是直播,
[流动的清泉][权心权意] 00:23:21
不知道,肯定有人说的
[T_T]13郎 00:24:14
不知会不会加特效后期处理
[流动的清泉][权心权意] 00:25:00
吃不到葡萄说葡萄酸
[T_T]13郎 00:25:07
[流动的清泉][权心权意] 00:25:56
有可能是假的,但是不会是他们说的那样
[T_T]13郎 00:25:56
和拿奖的都看不到脸
知他是谁
[流动的清泉][权心权意] 00:26:26
呵呵,太危险了
知道是谁,人肉出来就……
[T_T]13郎 00:28:14
太不清晰,玩下可以
[流动的清泉][权心权意] 00:30:07
彩票这个事,就是拿大部分人的钱给小部分
[流动的清泉][权心权意] 00:31:06
双色球每期彩票销量3个亿, 中奖顶多就一个亿
[T_T]13郎 00:32:49
那数字太傍大,多少人会看着那
[T_T]13郎 00:34:28
不是开奖那班人的身家是多少
那字一定惊人
数字
[流动的清泉][权心权意] 00:36:47
彩票每期至少3个亿,每期3成用慈善,就是自己花的
,你算下一年该有多少钱
一个星期有三期
[T_T]13郎 00:38:37
看你6个球都中过,想当你负出了都不少。不要玩太大。
[流动的清泉][权心权意] 00:39:27
应该快一万了
[T_T]13郎 00:40:03
记住,这里是天朝,
[T_T]13郎 00:40:35
没有做不到的,只有你想不到的
[流动的清泉][权心权意] 00:40:40
中过几次擦边球,还没有中大的
[T_T]13郎 00:42:27
这是最要命的因素。
[流动的清泉][权心权意] 00:43:01
……
[T_T]13郎 00:43:29
这才使人不甘心
[流动的清泉][权心权意] 00:44:26
恩,是的,所以说,大家还是不要买彩票了
[T_T]13郎 00:45:57
少买宜情,大买乱性
 楼主| 发表于 2013-7-15 00:57:54 | 显示全部楼层
[VBALISPER]恐龙 00:57:54
(* 10321920 17 131072)这个数=0,是溢出了吗?
计算器都可以求出2.299954987*10^13
 楼主| 发表于 2013-7-15 07:55:14 | 显示全部楼层
[pzweng][pzweng]路人 07:55:14
(* 10321920 17.0 131072)
整数超过限制了
 楼主| 发表于 2013-7-15 10:47:28 | 显示全部楼层
[236004]张牙舞爪 10:47:28
问个很菜的问题,
[236004]张牙舞爪 10:48:05
线的坐标已更改,怎么更新对象的DXF里的坐标?
[pzweng][pzweng]路人 10:49:18
组码吗
[236004]张牙舞爪 10:49:26
[gtj116600]轶凡 10:49:31
entmode重建实体
[pzweng][pzweng]路人 10:50:05
subst (cons 10 pt) (assoc 10 entdat) entdat
用vla-put...吧
[236004]张牙舞爪 10:50:15
用VLA函数,出现这样的错误,
命令: (vla-put-coordinates VlaOBJ LST)
; 错误: Automation 错误。 安全数组中的元素太少或总元素数目不是 3 的倍数
[gtj116600]轶凡 10:50:24
修改对象(图元)的定义数据

(entmod elist)
entmod 函数更新由 elist 的 -1 组中指定的图元名的数据库信息。AutoLISP 更新数据库信息的基本方法是,先用 entget 函数获得图元的定义数据,修改定义图元的表,然后用 entmod 函数来更新数据库中的图元。entmod 函数既可以修改图形对象,又可以修改非图形对象。

参数

elist

与 entget 函数返回表相同格式的表


对于那些使用浮点值的图元域(如厚度),entmod 函数可以接受整数,并将其转换成浮点数。与此类似,对于使用整数的图元域(如颜色代码),如果提供的是浮点数,entmod 函数会切除其小数部分,将其转换成整数。

返回值

如果成功,则 entmod 返回 elist。如果 entmod 不能修改指定图元,则函数返回 nil。

示例

下列命令获取图元的特性,然后修改图元。

将变量 en1 的值设置为图形中的一个图元的名称:

命令: (setq en1 (entnext)) 



将图元 en1 的图元数据保存在变量 ed 中:

命令: (setq ed (entget en1)) 

((-1 . ) (0 . "CIRCLE") (5 . "4C") (100 . "AcDbEntity") (67 . 0) (8 . "0") (100 . "AcDbCircle") (10 3.45373 6.21635 0.0) (40 . 2.94827) (210 0.0 0.0 1.0))

将 ed 中的图层组从图层 0 改为图层 1:

命令: (setq ed (subst (cons 8 "1") (assoc 8 ed) ed )) 

((-1 . ) (0 . "CIRCLE") (5 . "4C") (100 . "AcDbEntity") (67 . 0) (8 . "1") (100 . "AcDbCircle") (10 3.45373 6.21635 0.0) (40 . 2.94827) (210 0.0 0.0 1.0))

修改图形中 en1 图元的图层:

命令: (entmod ed) 

((-1 . ) (0 . "CIRCLE") (5 . "4C") (100 . "AcDbEntity") (67 . 0) (8 . "1") (100 . "AcDbCircle") (10 3.45373 6.21635 0.0) (40 . 2.94827) (210 0.0 0.0 1.0))

entmod 的使用限制

关于 entmod 函数所作的修改有一些限制:

不能改变一个图元的类型和句柄。如果一定要这样做,只能先调用 entdel 函数删除它,然后调用 command 或 entmake 函数创建新图元。 
entmod 函数不能修改内部域,如 SEQEND 图元的 -2 组中的图元名,如果试图作这样的修改,将会被系统忽略。 
不能使用 entmod 函数修改视口图元。 
可以将图元的空间可见性改为 0 或 1(视口对象除外)。如果用 entmod 函数修改了块定义中的图元,该修改会影响图形中该块的所有实例。

在用 entmod 函数修改顶点图元前,应先读出或写入多段线的头部。如果最近处理的多段线图元不是该顶点所在的多段线,可能会丢失宽度信息(40 和 41 组)。

警告! 可以用 entmod 函数修改块定义中的图元,但这样做可能会生成引用自身的块,导致 AutoCAD 系统崩溃。
[236004]张牙舞爪 10:50:25
我想用LISP试下
[pzweng][pzweng]路人 10:51:06
vla-put-StartPoint
不是coordinates
vla-put-endpoint这是终点
[gtj116600]轶凡 10:51:54
用VLA,需要构建2维或3维数组
[pzweng][pzweng]路人 10:51:54
coordinates是多线段才有的
不是构建,是改
vlax-3d-point
[236004]张牙舞爪 10:58:33
处理的是拟合的线
[pzweng][pzweng]路人 10:59:01
(vla-put-coordinates VlaOBJ LST)把lisp转一下
把lst转成safarray数组
[236004]张牙舞爪 10:59:31
已经转了
[pzweng][pzweng]路人 10:59:46
你是不是样条线呀
[236004]张牙舞爪 10:59:49
(setq LST(vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length lst)))) lst)))
(vla-put-coordinates VlaOBJ LST)
_$ 
; 错误: Automation 错误。 安全数组中的元素太少或总元素数目不是 3 的倍数
[pzweng][pzweng]路人 11:01:04
你用lisp试试吧
[236004]张牙舞爪 11:01:20
不知道LISP怎么更改
[pzweng][pzweng]路人 11:04:01
lisp好象不好改
全是10的组码
[286168051]勤龙 11:04:12
重新绘制
[pzweng][pzweng]路人 11:04:42
lisp只能是重新绘制
还是用vla吧
 楼主| 发表于 2013-7-15 11:30:34 | 显示全部楼层
[flytoday]过^-^客 11:30:34
有没办法让天正柱。。跟PL线一样用法
[LC100]建筑设计 11:31:19
可以啊。
[500w008]500w008 11:31:30
(defun entmod_tx ( pto pt2 ent_x / );修正字符坐标点
(if pto
  (progn
    (setq ang_pto (angle pt2 pto))
    (setq newp (polar pt2 ang_pto 150))
    (setq npp (list (car newp) (cadr newp)))
    (subst (cons 10 npp) (assoc 10 ent_x) ent_x)
    (entmod ent_x)
  )
 )
 (princ)
)
[LC100]建筑设计 11:31:34
X一下就行了。
[flytoday]过^-^客 11:31:43
就是不能改属性
[500w008]500w008 11:32:45
[qqimg]201307/{740CAECF-D919-B89F-F026-2AEC60436832}.GIF[/qqimg]REGION 后 重新定义曲线不就得了
 楼主| 发表于 2013-7-15 12:00:29 | 显示全部楼层
[236004]张牙舞爪 12:00:29
VL有拟合线的函数吗?
[286168051]勤龙 12:02:22
[236004]张牙舞爪 12:02:29
[pzweng][pzweng]路人 12:03:22
没有
 楼主| 发表于 2013-7-15 12:15:01 | 显示全部楼层
[500w008]500w008 12:15:01
谁有空帮忙调试一个LSP
[qqimg]201307/{B0B89C65-310D-C892-1152-B72FA2E736ED}.GIF[/qqimg]
[236004]张牙舞爪 12:19:30
VLA函数有不有拟合多段线的?
 楼主| 发表于 2013-7-15 12:30:59 | 显示全部楼层
[pzweng][pzweng]路人 12:30:59
你不就是更新多线段吗
[236004]张牙舞爪 12:31:26
[pzweng][pzweng]路人 12:31:51
vla-put-coordinates
[236004]张牙舞爪 12:31:57
你有更新多段线坐标的代码吗?
这个报错,
[236004]张牙舞爪(13885696) 10:59:45 
(setq LST(vlax-make-variant (vlax-safearray-fill (vlax-make-safearray vlax-vbdouble (cons 0 (1- (length lst)))) lst)))
[236004]张牙舞爪(13885696) 10:59:56 
(vla-put-coordinates VlaOBJ LST)
[236004]张牙舞爪(13885696) 11:00:08 
_$ 
; 错误: Automation 错误。 安全数组中的元素太少或总元素数目不是 3 的倍数
[pzweng][pzweng]路人 12:32:39
没转之前的表是什么样子
让我看一下
[236004]张牙舞爪 12:34:01
(1038.76 414.693 0.0 1469.48 244.987 0.0 1494.13 241.653 0.0 1848.84 193.68 0.0 2117.54 91.0673 0.0 2299.85 -39.4272 0.0 3152.85 -114.158 0.0)
((1038.76 414.693 0.0) (1469.48 244.987 0.0) (1494.13 241.653 0.0) (1848.84 193.68 0.0) (2117.54 91.0673 0.0) (2299.85 -39.4272 0.0) (3152.85 -114.158 0.0))
[286168051]勤龙 12:34:25
不应该有问题啊
[pzweng][pzweng]路人 12:34:54
我试试
[pzweng][pzweng]路人 12:39:40
可以了
张牙
你的表错了
你这是二维多线段
只需要xy坐标
不需要z
(vlax-safearray-fill
         (vlax-make-safearray
           vlax-vbdouble
           (cons 0 (1- (length lst)))
         )
         lst
       )
这样就可以了
[pzweng][pzweng]路人 12:42:01
lst需要的是安全数组不是变体
[286168051]勤龙 12:42:13
safearray
[pzweng][pzweng]路人 12:44:19
张牙
讲半天了你也吭个声
如果你的多线段是3维的就不会有问题
[236004]张牙舞爪 12:46:25
刚出去了
来了,
是安全数据
[pzweng][pzweng]路人 12:46:56
(setq LST2 (vlax-make-variant
        (vlax-safearray-fill
          (vlax-make-safearray
        vlax-vbdouble
        (cons 0 (1- (length lst)))
          )
          lst
        )
      )
)
你这个是变体了
[236004]张牙舞爪 12:47:19
那怎么改?
(vlax-safearray-fill
         (vlax-make-safearray
           vlax-vbdouble
           (cons 0 (1- (length lst)))
         )
         lst
       )
[pzweng][pzweng]路人 12:47:39
(setq LST (vlax-safearray-fill
         (vlax-make-safearray
           vlax-vbdouble
           (cons 0 (1- (length lst)))
         )
         lst
       )
)
[236004]张牙舞爪 12:47:44
我试下
[pzweng][pzweng]路人 12:47:45
就这样
[236004]张牙舞爪 12:47:45
??
[pzweng][pzweng]路人 12:47:52
把你的表里面的0.0去掉
不需要Z坐标
[linshiyin2]大地 12:48:34
[qqimg]201307/{07CDF9D2-F164-544A-CE65-32CD56338699}.gif[/qqimg]
[pzweng][pzweng]路人 12:48:43
首先要判断是不是二线多线段
你那表是3维多线段用的
[236004]张牙舞爪 12:49:32
我详细的说下,我这个情况
[236004]张牙舞爪 12:50:32
我写了二个程序,
一个是 拟合的线上删除点,一个是等高线修线
这二个程序只要执行其中一个,另一个就肯定执行不了。
就出现了,上面我说的那个错误报告。
同一条线,二个功能不能同时用,一用就报错。
就是这二个功以有,不能同时一起用,
[qqimg]201307/{03D3E067-C004-F26D-2488-974989895679}.gif[/qqimg]
[236004]张牙舞爪 12:52:06
[qqimg]201307/{7BC30502-20C4-E6B0-34B8-510F470167F1}.gif[/qqimg]
同一条线,二个功能不能同时用,一用就报错

1、先用 删除拟合点坐标,再用 修改等高线 的程序,报这样的错:
命令: xg
选择对象: ; 错误: AutoCAD.Application: 类无效
[236004]张牙舞爪 12:53:19
2、先用  修改等高线,再用 删除拟合点坐标,报这样的错:

错误: Automation 错误。 安全数组中的元素太少或总元素数目不是 3 的倍数
[236004]张牙舞爪 12:54:07
说明:修改等高线 程序是调用COMMAND 重绘制,
      删除拟合点的程序是 更新坐标表
[236004]张牙舞爪 12:54:58
以下二种错误,不管出现那种,把CAD关闭,重打开,再接着处理又可以。
[236004]张牙舞爪 12:58:38
问题的描述能看到吗?
 楼主| 发表于 2013-7-15 13:14:36 | 显示全部楼层
[500w008]500w008 13:14:36
(defun get_tx_n (ent_x /);得到字串各参数
(setq p_xy (assoc 10 ent_x)
      p_x (car p_xy)
      p_y (cadr p_xy)
      tx_0 (assoc 0 ent_x)
      tx_1 (assoc 1 ent_x)
      tx_8 (assoc 8 ent_x)
      tx_41 (assoc 41 ent_x)
      tx_50 (assoc 50 ent_x)
)
(princ)
)
 楼主| 发表于 2013-7-15 13:39:37 | 显示全部楼层
[pzweng][pzweng]路人 13:39:37
张工
我怎么可以呢
[500w008]500w008 13:47:50
哎调试一个LSP调死我了
[【KAIXIN】] [【KAIXIN】]炫翔 13:48:43
[AMKYUD][AMKYUD]??? 13:48:44
写的规范点就没有那么麻烦了
[【KAIXIN】] [【KAIXIN】]炫翔 13:48:56
写上注释
[pzweng][pzweng]路人 13:49:00
你可以再去凑凑
[500w008]500w008 13:49:08
我都分成很多小的
这个我写的了
分成4个小程序 一个一个调
[pzweng][pzweng]路人 13:50:16
去论坛上找
[500w008]500w008 13:50:42
[qqimg]201307/{24924EBC-527D-6C58-1019-53A9733549E0}.jpg[/qqimg]
论坛暂时没这个功能
别人的 写的 我也不怎么用 我写的 准备后面扩充
[500w008]500w008 13:52:39
估计在下面这个函数出错
(defun entmod_tx (pto pt2 ent_x /);修正字符坐标点
(if pto
  (progn
    (setq ang_pto (angle pt2 pto))
    (setq newp (polar pt2 ang_pto 150))
    ;(setq npp (list (car newp) (cadr newp)))
    (subst (cons 10 newp) (assoc 10 ent_x) ent_x)
    (entmod ent_x)
  )
 )
 (princ)
)
[286168051]勤龙 13:53:14
字符也有11的
。,,
[pzweng][pzweng]路人 13:54:11
估计在下面这个函数出错?
你不是在调试吗
怎么还用估计?
[500w008]500w008 13:54:52
但是 执行完成 没提示错误
[500w008]500w008 13:55:29
选择对象: ((-1 . ) (0 . "TEXT") (330 . ) (5 
. "30A") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "wr_lpj") (62 . 3) 
(100 . "AcDbText") (10 42342.0 17602.5 0.0) (40 . 450.0) (1 . "7%%13225 2/5") 
(50 . 1.5708) (41 . 0.7) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 
0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
[500w008]500w008 13:56:03
选择对象: ((-1 . ) (0 . "TEXT") (330 . ) (5 
. "2C6") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "LGJ1") (62 . 3) 
(100 . "AcDbText") (10 34363.3 17587.9 0.0) (40 . 450.0) (1 . "7%%13225 2/5") 
(50 . 1.5708) (41 . 0.7) (51 . 0.0) (7 . "STANDARD") (71 . 0) (72 . 0) (11 0.0 
0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbText") (73 . 0))
[pzweng][pzweng]路人 13:57:34
那就没错
[500w008]500w008 13:57:38
[qqimg]201307/{EA7FB6F5-C756-DA2A-B747-BD43A078B2EF}.gif[/qqimg] 我知道了 没有ENTGET
[500w008]500w008 13:58:58
ENTSEL
[500w008]500w008 14:06:35
[qqimg]201307/{173AF792-0133-6F5B-D44E-314B232A9E75}.jpg[/qqimg]为什么一些字符有一个夹点有些没有
[pzweng][pzweng]路人 14:09:52
单行多行区别
[pzweng][pzweng]路人 14:10:25
都有两个夹点
[500w008]500w008 14:10:56
有些有 有些没
[springwillow]孤帆 14:11:44
有插入点和对齐点的分咖哩
[pzweng][pzweng]路人 14:11:49
那是两个点重合了
[springwillow]孤帆 14:11:50
[仲文玉][仲文玉]wygjx 14:11:58
一个是下左,一个是下中
ctrl + 1看下
[500w008]500w008 14:16:37
11 这个是下中点吧
[springwillow]孤帆 14:17:26
10是插入点11是对齐点
[500w008]500w008 14:25:43
那我这个还差一个判断 判断在线上还是线下
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 08:41 , Processed in 0.222122 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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