乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 30|回复: 0

[编程交流] 帮助:增加属性数

[复制链接]

107

主题

615

帖子

575

银币

中流砥柱

Rank: 25

铜币
521
发表于 2022-7-5 16:29:50 | 显示全部楼层 |阅读模式
您好,我正在使用此lisp代码来增加沿多段线的属性块数。我需要做两个改变
 
1) 可以选择给出起始编号。我不知道;t需要每次从1、2、3等开始重新编号
 
2) 如果有两个具有公共边的多边形,则可以选择公共块,以防对其重新编号。
 
谢谢
 
  1. (defun c:pblinclw ( / ListClockwise-p osm ss lw vl pt n pr k v bl att )
  2. (defun ListClockwise-p ( lst / z vlst )
  3.    (vl-catch-all-apply 'minusp
  4.      (list
  5.        (if
  6.          (not
  7.            (equal 0.0
  8.              (setq z
  9.                (apply '+
  10.                  (mapcar
  11.                    (function
  12.                      (lambda (u v)
  13.                        (- (* (car  u) (cadr  v)) (* (car  v) (cadr  u)))
  14.                      )
  15.                    )
  16.                    (setq vlst
  17.                      (mapcar
  18.                        (function
  19.                          (lambda (a b) (mapcar '- b a))
  20.                        )
  21.                        (mapcar (function (lambda (x) (car lst))) lst)
  22.                        (cdr (reverse (cons (car lst) (reverse lst))))
  23.                      )
  24.                    )
  25.                    (cdr (reverse (cons (car vlst) (reverse vlst))))
  26.                  )
  27.                )
  28.              ) 1e-6
  29.            )
  30.          )
  31.          z
  32.          (progn
  33.            (prompt "\n\nChecked vectors are colinear - unable to determine clockwise-p of list")
  34.            nil
  35.          )
  36.        )
  37.      )
  38.    )
  39. )
  40. (setq osm (getvar 'osmode))
  41. (setvar 'osmode
  42. (prompt "\nPick 2D LWPOLYLINE that has blocks with attributes to increment at its vertices...")
  43. (setq ss (ssget "_+.:E:S" '((0 . "LWPOLYLINE"))))
  44. (setq lw (ssname ss 0))
  45. (setq vl (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget lw))))
  46. (if (not (ListClockwise-p vl)) (setq vl (reverse vl)))
  47. (setq pt (getpoint "\nPick starting point : "))
  48. (setq n (length vl))
  49. (setq pr (getstring "\nSpecify prefix : "))
  50. (setq vl (vl-member-if '(lambda (x) (equal (list (car pt) (cadr pt)) x 1e-6)) (reverse (cdr (vl-member-if '(lambda (x) (equal (list (car pt) (cadr pt)) x 1e-6)) (reverse (append vl vl)))))))
  51. (setq k 0)
  52. (repeat n
  53.    (setq k (1+ k))
  54.    (setq v (car vl))
  55. (setq bl
  56. (ssname
  57.    (ssget
  58.      "_X"
  59.      (list
  60.        '(0 . "INSERT")
  61.        '(66 . 1)
  62.        '(-4 . "<,<,*")
  63.        (list 10 (+ (car v) 1e-6) (+ (cadr v) 1e-6) 0.0)
  64.        '(-4 . ">,>,*")
  65.        (list 10 (- (car v) 1e-6) (- (cadr v) 1e-6) 0.0)
  66.      )
  67.    )
  68.    0
  69. )
  70. )
  71.    (setq att (entnext bl))
  72.    (entmod (subst (cons 1 (strcat pr (itoa k))) (assoc 1 (entget att)) (entget att)))
  73.    (entupd att)
  74.    (setq vl (cdr vl))
  75. )
  76. (setvar 'osmode osm)
  77. (princ)
  78. )
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 13:10 , Processed in 0.440777 second(s), 56 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表