2013 m. vasario 1 d., penktadienis

Linijų ir kitų primityvų visas ilgis tolal length

Turim ta stebuklinga projektavimo programa Autocad ir norisi pusiau automatizuoto kompiuterinio paskaičiavimo, a ne pasirodo, taip paprastai negausi norimo rezultato.

Gyvenimiška situacija, reikia paskaičiuoti štančo (peiliuko) ilgį kurio konfigūracija susideda iš paprastu liniju kurie jungiasi į kvadratus stačiakampius ir dar kampai yra suapvalinti.

Pasibraižau peilio maketą ir su LIST komanda pažymių visus objektus, programa meta kiekvieno primityvo parametrus tame tarpe ir perimetrą, tai ką ma dar reikia imti kalkuliatorių ir tuos skaičius rankiniu būdu sudedinėti ..... :( ....... vot tau ir Automated Computer-Aided Design.

Nenusiminkim šią problemą galima išspresti su Autolispu, žemiau kodas kuris puikiai suskaičiuoja visų pažymėtų objektų ilgius. Tik neapsirikim su ilgiais jei tarkim viena dengia kitą, bus suskaičiuotas abiejų ilgiai, nors brėžinyje matysite tik vieną linija.

(defun c:tlen  (/ ss)
  (vl-load-com)
  (if (setq ss (ssget))
    (apply '+
      (vl-remove-if
        'vl-catch-all-error-p
          (mapcar '(lambda (x)
                     (vl-catch-all-apply
                       '(lambda (y)
                          (vlax-curve-getDistatParam y
                            (vlax-curve-getEndParam y))) (list x)))
                  (mapcar 'vlax-ename->vla-object
                    (vl-remove-if 'listp
                      (mapcar 'cadr (ssnamex ss)))))))))

p.s. yra ir kitas būdas žiūrėti čia

Komentarų nėra:

Rašyti komentarą