tuanha8896 1 Báo cáo bài đăng Đã đăng Tháng 1 16 em có tải được lisp tìm đối tượng được xuất từu cad qua excell... lisp hiện tìm được đối tượng khi giá trị handle xuất ra ở cột A... Em xin nhờ các anh chị trong diễn đàn hướng dẫn sửa lisp khi mà giá trị handle ở cột khác với ạ.... 25.SelectObjectByHandle(Tra).lsp Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
limfx 32 Báo cáo bài đăng Đã đăng Tháng 1 16 Bạn đưa file cad và excel lên mình xem thử sao Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
huunhantvxdts 195 Báo cáo bài đăng Đã đăng Tháng 1 17 14 giờ trước, tuanha8896 đã nói: em có tải được lisp tìm đối tượng được xuất từu cad qua excell... lisp hiện tìm được đối tượng khi giá trị handle xuất ra ở cột A... Em xin nhờ các anh chị trong diễn đàn hướng dẫn sửa lisp khi mà giá trị handle ở cột khác với ạ.... 25.SelectObjectByHandle(Tra).lsp Mình chỉnh lại cho bạn cột đầu tiên của vùng chọn nhé Lisp này bạn lấy trên nhóm zalo Autolisp hỗ trợ vẽ cad sao không hỏi ở đó để mọi người hỗ trợ kịp thời. ;;;;;chon doi tuong theo handle tu excel (defun C:tra ( / CheckActiveCell CheckCloseApp Ename Handle ListAddress ListRowInvalid ListStringAddress NumRow NumRowEnd NumRowStart SelectionSet StringAddress StringAddressTotal VlaAppExcel VlaWorkbooks VlaRange VlaSheet) (setq CheckActiveCell (SHIE_CHECKACTIVECELL)) (setq SelectionSet (ssadd)) (if CheckActiveCell (progn (setq VlaAppExcel (vlax-get-or-create-Object "Excel.Application")) (vlax-put-property VlaAppExcel "Visible" :vlax-true) (setq VlaWorkbooks (vlax-get-property VlaAppExcel "Workbooks")) (setq CheckCloseApp (= (vla-get-count VlaWorkbooks) 0)) (setq VlaRange (vlax-get-property VlaAppExcel "Selection")) (setq VlaSheet (vlax-get-property VlaAppExcel "ActiveSheet")) (if VlaRange (progn (setq StringAddressTotal (vlax-get-property VlaRange "Address" :vlax-false :vlax-false 1 :vlax-false :vlax-false)) (setq ListStringAddress (SHIE_STRING_TO_LIST_NO_TRIM StringAddressTotal ",")) (foreach StringAddress ListStringAddress (setq ListAddress (SHIE_STRINGADDRESS_TO_LISTADDRESS StringAddress)) (setq NumRowStart (nth 1 ListAddress)) (setq Row (nth 2 ListAddress)) (setq NumRowEnd (nth 3 ListAddress)) (if (not NumRowEnd) (setq NumRowEnd NumRowStart) ) (setq NumRow NumRowStart) (while (<= NumRow NumRowEnd) (setq StringAddress (SHIE_LISTADDRESS_TO_STRINGADDRESS (list Row NumRow))) (setq VlaRange (vlax-get-property VlaSheet "Range" StringAddress)) (setq Handle (vlax-variant-value (vlax-get-property VlaRange "Text"))) (setq Ename (handent Handle)) (if Ename (setq SelectionSet (ssadd Ename SelectionSet)) (setq ListRowInvalid (cons NumRow ListRowInvalid)) ) (setq NumRow (+ NumRow 1)) ) ) (sssetfirst Nil SelectionSet) ) ) ) ) (if (= (sslength SelectionSet) 0) (alert "There is no valid data selected from excel!") ) (if ListRowInvalid (princ (strcat "\nThere is no valid data in row: " (SHIE_LIST_TO_STRING (mapcar '(lambda (x) (itoa (+ x 1))) ListRowInvalid) ","))) ) (princ) ) ------------------------------------------------------------------------------------------------------------------- (defun SHIE_CHECKACTIVECELL ( / CheckActiveCell CheckCloseApp VlaAppExcel VlaRangeActive VlaWorkbooks) (setq VlaAppExcel (vlax-get-Object "Excel.Application")) (if VlaAppExcel (progn (setq VlaRangeActive (vlax-get-property VlaAppExcel "Selection")) (if VlaRangeActive (setq CheckActiveCell T) ) (setq VlaWorkbooks (vlax-get-property VlaAppExcel "Workbooks")) (setq CheckCloseApp (= (vla-get-count VlaWorkbooks) 0)) (if CheckCloseApp (progn (vlax-invoke-method VlaAppExcel "Quit") (vlax-release-object VlaAppExcel) ) ) ) ) CheckActiveCell ) ------------------------------------------------------------------------------------------------------------------- (defun SHIE_STRINGADDRESS_TO_LISTADDRESS ( StringAddress / ListStringAddressCell ListAddress) (setq ListStringAddressCell (SHIE_STRING_TO_LIST_NEW StringAddress ":")) (setq ListAddress (apply 'append (mapcar 'SHIE_STRINGADDRESSCELL_TO_LISTADDRESSCELL ListStringAddressCell))) ListAddress ) -------------------------------------------------------------------------------------------------------------------- (defun SHIE_STRINGADDRESSCELL_TO_LISTADDRESSCELL ( StringAddressCell / Char ListAddressCell Pos PosBase PosTotal) (setq PosTotal (strlen StringAddressCell)) (setq Pos 1) (while (and (not PosBase) (<= Pos PosTotal) ) (setq Char (substr StringAddressCell Pos 1)) (if (member Char (list "0" "1" "2" "3" "4" "5" "6" "7" "8" "9")) (setq PosBase Pos) ) (setq Pos (+ Pos 1)) ) (setq ListAddressCell (list (SHIE_STRINGCOLUMN_TO_NUMCOLUMN (substr StringAddressCell 1 (- PosBase 1))) (- (atoi (substr StringAddressCell PosBase)) 1) ) ) ListAddressCell ) ------------------------------------------------------------------------------------------------------------------- (defun SHIE_LISTADDRESS_TO_STRINGADDRESS ( ListAddress / NumLength StringAddress) (setq NumLength (length ListAddress)) (if (= NumLength 2) (setq StringAddress (strcat (SHIE_NUMCOLUMN_TO_STRINGCOLUMN (nth 0 ListAddress)) (itoa (+ (nth 1 ListAddress) 1)) ) ) ) (if (= NumLength 4) (setq StringAddress (strcat (SHIE_NUMCOLUMN_TO_STRINGCOLUMN (nth 0 ListAddress)) (itoa (+ (nth 1 ListAddress) 1)) ":" (SHIE_NUMCOLUMN_TO_STRINGCOLUMN (nth 2 ListAddress)) (itoa (+ (nth 3 ListAddress) 1)) ) ) ) StringAddress ) -------------------------------------------------------------------------------------------------------------------- (defun SHIE_STRINGCOLUMN_TO_NUMCOLUMN ( StringColumn / Base NumColumn ListTemp) (setq Base 1) (setq ListTemp (reverse (mapcar '(lambda (x) (- x 64)) (vl-string->list StringColumn)))) (setq NumColumn 0) (foreach Temp ListTemp (setq NumColumn (+ NumColumn (* Temp Base))) (setq Base (* Base 26)) ) (setq NumColumn (- NumColumn 1)) ) -------------------------------------------------------------------------------------------------------------------- (defun SHIE_NUMCOLUMN_TO_STRINGCOLUMN ( NumColumn / NumMod StringColumn) (setq NumColumn (+ NumColumn 1)) (setq StringColumn "") (while (> NumColumn 0) (setq NumMod (rem NumColumn 26)) (setq StringColumn (strcat (if (= NumMod 0) "Z" (chr (+ NumMod 64))) StringColumn ) ) (if (= NumMod 0) (setq NumColumn (- (/ NumColumn 26) 1)) (setq NumColumn (/ NumColumn 26)) ) ) StringColumn ) ------------------------------------------------------------------------------------------------------------------- (defun SHIE_LIST_TO_STRING ( ListString Sep / StringValue) (setq StringValue (car ListString)) (foreach StringTemp (cdr ListString) (setq StringValue (strcat StringValue Sep StringTemp)) ) StringValue ) -------------------------------------------------------------------------------------------------------------------- (defun SHIE_STRING_TO_LIST_NEW (Stg Del / ListString) (setq ListString (SHIE_STRING_TO_LIST_NO_TRIM Stg Del)) (setq ListString (mapcar '(lambda (x) (vl-string-trim " " x)) ListString)) (setq ListString (mapcar '(lambda (x) (vl-string-trim "\t" x)) ListString)) ListString ) ------------------------------------------------------------------------------------------------------------------- (defun SHIE_STRING_TO_LIST_NO_TRIM (Stg Del / LenDel StgTemp Pos StgSub StgSubTemp ListString) (if Stg (progn (setq LenDel (strlen Del)) (setq StgTemp Stg) (while (setq Pos (vl-string-search Del StgTemp)) (setq StgSub (substr StgTemp 1 Pos)) (setq StgTemp (substr StgTemp (+ Pos 1 LenDel))) (setq StgSubTemp StgSub) (if (/= StgSubTemp "") (setq ListString (cons StgSub ListString)) ) ) (setq StgSub StgTemp) (setq StgSubTemp StgSub) (if (/= StgSubTemp "") (setq ListString (cons StgSub ListString)) ) (if (not ListString) (setq ListString (list Stg)) ) (setq ListString (reverse ListString)) ) ) ListString ) 1 Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác
tuanha8896 1 Báo cáo bài đăng Đã đăng Tháng 1 17 Dạ cảm ơn anh ạ... Tại em tải về mà không nhớ là tải ở đâu ạ... Anh có thêm chú thích tại các vị trí sửa để sau này có thể sửa tùy thích vị trí cột handle không ạ Chia sẻ bài đăng này Liên kết tới bài đăng Chia sẻ trên các trang web khác