Break Dim Associations

Hey!

I already figured it out once but cant remember the command.
I want to "reset/break" the associative points of my dimensions. So the non/associative point would be directly at the end of my dimension (instead of 2 grips one).

cheers

Comments

  •  Have a look at the DimDisassociate and DimReassociate commands.
  • Thanks, but thats not it.

    see picture: i want the circled "points" gone and just the uncircled points to show.

    imageUnbenannt.png
  • The circled grips indicate the control points of the dimension. It is unclear to me why you would want to turn them off. 
  • i dont exactly want to turn them off, i want them to be always at the same distance to the dimension or at the end point of the dimension itself.
    since people are sloppy in creating the dimensions by clicking lines all over the place, that are at the right height the control points also vary widely and are not vertically aligned.


  •  OK, I think you are looking for fixed length extension lines. You can do this by setting the DIMFXL (Extension line fixed length) and DIMFXLON (Extension line fixed) dimension variables. See image.
    imageDimLineFixed.png
  • Also not :D

    Fixed length is already standard with me, but thats not what i mean.

    Fixed Length is shortening the extension line, but the control point is still at the same position. So i would need something like DIMFXL, but for control points.

    sry if i am not clear enough.

    cheers
  •  I am still puzzled about what you want.

    -Joe
  •  I am still puzzled about what you want.
    Me too.
  • ok, i didn`t think that this is this big of a question.

    Lets give it another try.
    I attached 3 images.

    Now 1 shows what is happening while drawing. i am creating dimensions and the result is the control points not being parallel to each other but rather where i clicked before.(nevermind the length of the extension line).

    Now what i want to do is batch-shortening the control points to for example 10mm away from the extension line and being parallel to each other. Like Image 2.
    Even better would be image 3, where the control points are actually the same as the end points of the dimension.

    I hope that makes it clear now.
    cheers
    image3.png
    image2.png
    image1.png
  •  Dear Benjamin
    I think you missed the meaning of dimension control points: they control the dimension itself and therefore must sit where they are and cannot be aligned as you wish.






  • i am not missing the meaning. but you cant assume everybody is working with associative dimensions.
    since i dont need any associative dimensions and for example have all my dimensions sitting on the outside of my buildings i set up my control points, but in the end they end up all over the place.
    when i now want to stretch one or multiple dimensions this is becoming impossible since bricscad is not grabbing the points at the end of the dimension lines as stretch point but rather the control points.

    There has to be a way to control this behaviour


    image5.png
  • Whether the dimensions are associative or not is irrelevant, this is simply how dimension objects are designed to work. They have always placed a control marker on the object being dimensioned. To update a dimension you focus on updating the drawing object, STRETCH is a good option here, this will work whether the dimension is associative or not.

    You can achieve what you want, but it requires extra work, and I think it would be prone to error:
    1. Run DIMLINEAR
    2. When prompted for the first origin, hover over the end of a line (make sure you have Snap tracking on) to pick up the ENDP, then move away holding the tracking line and pick a point.
    3. When prompted for the 2nd origin line, either use a PERPindicular snap, or repeat the snap tracking technique.
    Per Louis earlier post, you can configure the dimension style to either have fixed extension lines, or none at all.

    Regards,
    Jason Bourhill
  • @Benjamin:
    What you want to achieve can be done programmatically, but the fact that what you call 'sloppy' most CAD operators would consider to be 'best practice' should make you think.
    [code]; (PutDefPointsOnDimLine (car (entsel)))
    (defun PutDefPointsOnDimLine (enm / ang elst nor pt0 pt1 pt2)
      (setq elst (entget enm))
      (if (vl-position '(100 . "AcDbAlignedDimension") elst)
        (progn
          (setq nor (cdr (assoc 210 elst)))
          (setq pt0 (trans (cdr (assoc 10 elst)) 0 nor))
          (setq pt1 (append (vle-remove-last (trans (cdr (assoc 13 elst)) 0 nor)) (cddr pt0)))
          (setq pt2 (append (vle-remove-last (trans (cdr (assoc 14 elst)) 0 nor)) (cddr pt0)))
          (setq ang
            (if (vl-position '(100 . "AcDbRotatedDimension") elst)
              (cdr (assoc 50 elst))
              (angle pt1 pt2)
            )
          )
          ;; For Rotated Dimensions gc 13 and gc 14 must be changed together.
          (entmod
            (subst
              (cons 13 (trans (inters pt0 (polar pt0 ang 1.0) pt1 (polar pt1 (+ ang (* 0.5 pi)) 1.0) nil) nor 0))
              (assoc 13 elst)
              (subst
                (cons 14 (trans (inters pt0 (polar pt0 ang 1.0) pt2 (polar pt2 (+ ang (* 0.5 pi)) 1.0) nil) nor 0))
                (assoc 14 elst)
                elst
              )
            )
          )
          T
        )
      )
    )

    (defun c:Test ( / doc ss)
      (setq doc (vla-get-activedocument (vlax-get-acad-object)))
      (vla-endundomark doc)
      (vla-startundomark doc)
      (if (setq ss (ssget '((100 . "AcDbAlignedDimension"))))
        (progn
          (setvar 'cmdecho 0)
          (command "_.dimdisassociate" ss "")
          (setvar 'cmdecho 1)
          (mapcar 'PutDefPointsOnDimLine (vle-selectionset->list ss))
        )
      )
      (vla-endundomark doc)
      (princ)
    )[/code]
  •  ext line offset = 0
  • @roy:
    i haven`t said sloppy, but if it`s what you understood i`m sorry. If I could learn 10 people in my office and all the planners i work with to set dimensions the right way i would. I am just trying to say, that at least when there should be a possibility to either stretch dimensions at extension lines or return the control points back to a certain "standard length" to make it easier manipulating them.
    For example see the 2 pictures:
    I i wanted to change the 2 dimensions at once i would have to grab both control points at once (which are not near to each other), where i also select a lot of other lines in the way, which i then have to deselect again. (pic 1)
    If i now would be able to stretch the dimensions by just grabbing the joining ends of both dim lines instead of having to select the control points this would make life much easier. (pic 2)

    As for your code, thank you! unfortunateley i am getting an error and it doesnt change the control points.
    [code; ----- LISP : Call Stack -----
    ; [0]...C:TEST
    ; [1].....PUTDEFPOINTSONDIMLINE <<--<br>;
    ; ----- Error around expression -----
    (* 0.5 PI)
    ;
    ; error : bad argument type ; expected at [polar][/code]

    cheers

    image2.png
    image1.png
  • @Benjamin:
    In post #5 you have used the word 'sloppy'.
    I'll test the code again. I may have missed something.
  • You are right, i used that word...
    I meant it with sth like this in mind, which happens all the time in the office:
    You want to put a dimension on the red lines crossing, but instead you click on the yellow line, because hey, it`s on the same height, who cares.
    Correct would be picture 2.
    Picture 3 also happens quite often.

    So you see, i am just trying to get a way to simplify this stuff, since my colleagues and planners will not learn it anytime soon i think.

    cheers
  • You are right, i used that word...
    I meant it with sth like this in mind, which happens all the time in the office:
    You want to put a dimension on the red lines crossing, but instead you click on the yellow line, because hey, it`s on the same height, who cares.
    Correct would be picture 2.
    Picture 3 also happens quite often.

    So you see, i am just trying to get a way to simplify this stuff, since my colleagues and planners will not learn it anytime soon i think.

    cheers
    image5.png
    image1245.png
    image6.png
  •  While I don't have the issue that the original poster had, I do have problems with associative dimensions.  Or rather, what always turns out to be a mess of unpredictable dimensions.  There are several ways to break associativity, so when you need to make changes, you can often have dimensions behave in ways you aren't expecting.  Associated dimensions on polylines are another kind of problem, since putting a break in a polyline can cause any dimensions associated with it to behave unpredictably.  On a simple drawing, you may notice a dimension that is no longer where it should be. But, it can be impossible to find the errant dimensions on a complex drawing with many layers of information. Note that this is not a BricsCAD problem, since they are behaving as AutoCAD would.

    My solution was to set dimassoc to 1, so they are not created with associativity.

    Note that it is possible to create the dimensions as the original poster wanted, even if it is a bit tedious.  You have to use point filters [i.e. .x .y]  for the 1st dimension point to place it offset from the object you are dimensioning.  Then, you  either use the .xy type of filters again, or use the PERpendicular snap for the 2nd point.

    -Joe
  • Retesting shows that the code works fine.
    Maybe you have overwritten the Pi symbol? You can check by entering this in the Command Bar:
    [code]!PI[/code]
    If Pi is still ca. 3.14 then please post a test dwg.
  •  The main problem with your way of dimensioning is that it is very easy to get it wrong. se pic .
    Put your dims in a separate layer, freeze all and move your endpoints with stretch like Jason says.
    imagedim.jpg
  • find the test dwg attached and the lsp file i created and loaded. i started the command with "TEST".
    Pi is still 3.14 sth


    defpoints.lsptest.dwg

  • You have '1..0' somewhere in the Lisp file. this should be '1.0' (as per the code I have posted).

  • @roy: Perfect, works like a charm. Thank you! No idea why he made a double point there, i just copied and pasted. Anyway, thanks!
    @patrik: I will take that into account.
This discussion has been closed.