Jump to content

Leaderboard

Popular Content

Showing content with the highest reputation on 08/03/2021 in all areas

  1. Outside of LISP, I saw something similar which was to make the objects into a block, the block can be scaled by axis, then explode the block. Might be able to do something similar with a LISP?
    2 points
  2. Use overkill .. those polylines are a mess.
    1 point
  3. Yeah, I'm still using Photoshop CS6, which was the last release before Adobe went full subscription mode. But unlike Autodesk, Adobe allows me to keep my license and I was able to disable it on my old computer and install it on my new computer without any hassles or being forced on to subscription. As for Autocad, I'm still using 2018. My client allows me to use their license under the agreement that I don't do work for anyone else. I suppose I could ask them to upgrade me, but I'm not bothered. 2018 works fine for me.
    1 point
  4. I've never seen anything but references like blocks and xrefs with different properties for x & y scale or seen it done in a lisp. Block could be purged in the lisp after exploding. I've often used this in older versions that would convert polylines into line segments I'd half to rejoin but in current versions polylines return as polylines. Seems like a no-brainer.
    1 point
  5. Like jonathon dynamic blocks. have a look at this. Has shapes etc. Parking Tools - Metric.dwg
    1 point
  6. I think parametric constraints will work better than using reactors... maybe you can give that a shot.
    1 point
  7. Obviously you'll need to use object reactor(s) - So there would be "master" and "slave" objects. I would use a list datastructure like so: (list (list <master1> <master2> ... <masterN>) (list <slave1> <slave2> ... <slaveN>)) By manipulating any of the masters in the first set, the reactor would trigger changes to the second set for all the slaves. Say this datastructure would represent only one set of those outlines and linked centerlines. Then I could expand it by setting it as a part of a larger list, which would contain multiple sublists. And I would store all this data as handles into some dictionary. Then upon modifying any object within the reactor, check for the associated outline data in this list, perform changes on the entities and modify/store/rewrite the data. Unfortunately no thoughts about erasing/copying and re/un-doing. Perhaps check this example.
    1 point
  8. You can try this to remove duplicate vertices. Probably won't work on polylines that have bulges and did not fix the error in your sample drawing when creating the region. (defun c:foo (/ a f o p r s) ;; RJP » 2021-08-02 ;; Remove duplicate polyline vertexes (cond ((setq s (ssget ":L" '((0 . "LWPOLYLINE")))) (foreach e (vl-remove-if 'listp (mapcar 'cadr (ssnamex s))) (setq p (vlax-get (setq o (vlax-ename->vla-object e)) 'coordinates) r nil f nil ) (while (cadr p) (setq r (cons (setq a (mapcar '+ p '(0 0))) r) p (cddr p) ) (while (equal a (mapcar '+ p '(0 0)) 1e-8) (setq f (setq p (cddr p))) (print "Duplicate Vertex Removed") ) ) (and f (vlax-put o 'coordinates (apply 'append (reverse r)))) ) ) ) (princ) )
    1 point
×
×
  • Create New...