_

te ... tabelki

Forum poświęcone flagowemu produktowi oraz aplikacjom pochodnym Autodesku. To jedyne forum mające w tytule nazwę programu, a to ze względu na jego olbrzymią popularność w Polsce. Można tutaj umieszczać również posty z ogólnie pojętej tematyki "Kreślarskie 2D".

te ... tabelki

Postprzez asa » maja 17, 2019 21:39

Szanowne Koleżanki i Koledzy, co to im lispy nie obce są.
Zwracam się z u przejmą prośbą o pomoc, bo coś mnie nie wychodzi.
Problem dotyczy badania lispem połączonych komórek tabelki. Niby są zabawki, co to mają sprawdzić czy celki są zmergowane, ale ... być może mam uprzedzenie to tableobjectów, co powoduje u mnie drobną frustrację.
Pozdrawiam ciepło
asa
asa
 
Posty: 570
Dołączył(a): lut 18, 2007 20:01

Re: te ... tabelki

Postprzez kojacek » maja 18, 2019 07:57

asa napisał(a):Szanowne Koleżanki i Koledzy, co to im lispy nie obce są.
Zwracam się z u przejmą prośbą o pomoc, bo coś mnie nie wychodzi.
Problem dotyczy badania lispem połączonych komórek tabelki. Niby są zabawki, co to mają sprawdzić czy celki są zmergowane, ale ... być może mam uprzedzenie to tableobjectów, co powoduje u mnie drobną frustrację.
Pozdrawiam ciepło
asa


Można rzec że mi lispy obce nie są. Coś tam kiedyś robiłem w tabelkach, ale jakoś mnie nie ujęły szczególnie... Od ręki na podstawie właśnie tych starych badań... <klik>
acadtablemergedcelltest.gif
acadtablemergedcelltest.gif (238.15 KiB) Przeglądane 194 razy


i kod:
Kod: Zaznacz cały
; --------------- by kojacek ----------------------------------
(defun C:TESTTAB (/ d o r)
  (if
    (setq d (jk:TAB_GetTablePoint
              (getpoint "\nPunkt w celi:"))
    )
    (progn
      (setq o (car d))
      (setq r
        (vla-IsMergedCell
          o (cadr d)(caddr d)
          0 (vla-get-Rows o)
          0 (vla-get-Columns o)
        )
      )
      (alert
        (cond
          ( (= r :vlax-true) "Tak - jestem scalona... :)")
          ( (= r :vlax-false) "Niestety nie scalonam... :(")
          (t "Opsssss... ")
        )
      )
    )
  )
  (princ)
)
;
(defun jk:TAB_GetTablePoint (Pt / ds p1 ss vc To row col x y)
  (if Pt
    (progn
      (setq ds (getvar "VIEWSIZE")
            p1 (polar Pt (* 0.5 pi) ds)
            ss (ssget "_F" (list Pt p1)'((0 . "ACAD_TABLE")))
      )
      (if ss
        (progn
          (setq vc (vlax-3d-point (getvar "VIEWDIR"))
                To (vlax-ename->vla-object (ssname ss 0))
          )
          (vl-catch-all-error-p
            (vl-catch-all-apply
               'vla-hittest
               (list To
                 (vlax-3d-point (trans Pt 1 0))
                     vc 'row 'col)
            )
          )
          (if
            (and (numberp row)(numberp col))
            (if
              (and (minusp row)(minusp col))
              nil
              (list To row col)
            )
            (progn
              (vla-GetBoundingBox To 'x 'y)
              (if
                (< (cadr (trans Pt 1 0))
                   (cadr (vlax-safearray->list x)))
                nil
                (list 0)
              )               
            )
          )
        )
        nil
      )
    )
  )
)
; ----------------------------------------------------------


Tobie działania nie ma co tłumaczyć :)
Avatar użytkownika
kojacek
 
Posty: 5495
Dołączył(a): paź 03, 2005 20:17

Re: te ... tabelki

Postprzez asa » maja 21, 2019 12:08

kojacek napisał(a):
Można rzec że mi lispy obce nie są. Coś tam kiedyś robiłem w tabelkach, ale jakoś mnie nie ujęły szczególnie...
Tobie działania nie ma co tłumaczyć :)

Kurcze blade i inna motyla noga. Próbowałem IsMergedCell i IsMergeAllEnabled i nie mogę wydłubać na której celce się kończy połączenie.
2.bmp
2.bmp (968.02 KiB) Przeglądane 108 razy

Co prawda moja wojna z tabelkami ma charakter lekko zaczepny, ale chyba trzeba przeprowadzić jeden frontalny atak z nalotem dywanowym, więc jeżeli ktoś z Was posiada odpowiednie UB (urządzenia bojowe), lub wiedzę jak je stworzyć to byłbym wdzięczny i moje szare leniwe komórki również.
Pozdrawiam ciepło
asa
asa
 
Posty: 570
Dołączył(a): lut 18, 2007 20:01

Re: te ... tabelki

Postprzez ziele_o2k » maja 21, 2019 18:29

Dawno nie było niczego do rozgryzienia :)

Kod: Zaznacz cały
(defun c:getmergedcells
    (
        /
        tab_obj row_cnt col_cnt r inc_r inc_c rmin rmax cmin cmax tmp_lst res
    )
    (setq tab_obj (vlax-ename->vla-object (car (entsel "\nWskaż tablekę: "))))
    (setq row_cnt (vla-get-Rows tab_obj))
    (setq col_cnt (vla-get-Columns tab_obj))
    (setq inc_r 0)
    (repeat row_cnt
        (setq inc_c 0)
        (repeat col_cnt
            (setq r (vla-IsMergedCell tab_obj inc_r inc_c 'rmin 'rmax 'cmin 'cmax))
            (if
                (and
                    (= r :vlax-true)
                    (not (member (setq tmp_lst (list rmin rmax cmin cmax)) res))
                )
                (setq res (cons tmp_lst res))
            )
            (setq inc_c (1+ inc_c))
        )
        (setq inc_r (1+ inc_r))
    )
    (if res
        (foreach $rng (reverse res)
            (print $rng)
        )
        (princ "\nBrak zmerdżowanych komórek :( ...")
    )
    (princ)
)


EDYTA:
Przy okazji trafiłem na ten temat:
http://forum.cad.pl/tabele-t77466.html#p7666585
Odpowiedź na kojacka pytanie można łatwo wydłubać z tego co wrzuciłem :)
Ziele
Avatar użytkownika
ziele_o2k
 
Posty: 778
Dołączył(a): mar 18, 2014 11:33
Lokalizacja: Poznań


Powrót do AutoCAD

Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników