Chuyển đến nội dung
Diễn đàn CADViet
Jin Yong

Hỏi về Lisp (thuật toán, ý tưởng, coding,...)

Các bài được khuyến nghị

7 giờ trước, huunhantvxdts đã nói:

Chỉnh lại cho bạn nó hoàn thiện hơn


(defun c:ii (/ lstdt mn mx cur_lay oldos Box)
 (vl-load-com)
(setq cur_lay (getvar "clayer" ))
(setq oldos (getvar "OSMODE"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
 (if (not (tblsearch "layer" "Khung Viewport"))
 (COMMAND "LAYER" "M" "Khung Viewport" "C" "1" "" "L" "CONTINUOUS" "" "LW" "0.13" "" "P" "N" "" "")
 )
(setvar "clayer" "Khung Viewport")
(prompt "\nChon doi tuong:")
(setq lstdt (acet-ss-to-list (ssget '((0 . "LWPOLYLINE")))))
(foreach ent lstdt
(vla-getboundingbox (vlax-ename->vla-object ent) 'mn 'mx)
(vl-cmdf "._rectang" (vlax-safearray->list mn) (vlax-safearray->list mx))
(setq Box (vlax-ename->vla-object (entlast)))
(vl-catch-all-apply 'vla-put-ConstantWidth (list Box 0.5))
)
(setvar "clayer" cur_lay)
(setvar "osmode" oldos)
(setvar "CMDECHO" 1)
 (princ)
)

 

cám ơn bác đã bỏ thời gian. Mục đích của lisp là để bo viền khung tên (hoặc 1 block chữ nhật), sau đó dùng các lisp xuất các rectang đó mỗi một rectang là một layout (hiện giờ các lisp free trên cadviet hay là lisp bán đều chỉ áp dụng được với khung chữ nhật :<)

Do đó bác sửa lisp tuy quét hàng loạt được rồi nhưng lại không chọn được block :(

Nếu được bác sửa lại hộ chọn được cả block thì tốt quá. 

Cám ơn bác trước.

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
4 giờ trước, nhimret đã nói:

cám ơn bác đã bỏ thời gian. Mục đích của lisp là để bo viền khung tên (hoặc 1 block chữ nhật), sau đó dùng các lisp xuất các rectang đó mỗi một rectang là một layout (hiện giờ các lisp free trên cadviet hay là lisp bán đều chỉ áp dụng được với khung chữ nhật :<)

Do đó bác sửa lisp tuy quét hàng loạt được rồi nhưng lại không chọn được block :(

Nếu được bác sửa lại hộ chọn được cả block thì tốt quá. 

Cám ơn bác trước.

Sửa lại cho bạn thêm block

(defun c:ii (/ lstdt mn mx cur_lay oldos Box)
 (vl-load-com)
(setq cur_lay (getvar "clayer" ))
(setq oldos (getvar "OSMODE"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
 (if (not (tblsearch "layer" "Khung Viewport"))
 (COMMAND "LAYER" "M" "Khung Viewport" "C" "1" "" "L" "CONTINUOUS" "" "LW" "0.13" "" "P" "N" "" "")
 )
(setvar "clayer" "Khung Viewport")
(prompt "\nChon doi tuong:")
(setq lstdt (acet-ss-to-list (ssget '((0 . "LWPOLYLINE,insert")))))
(foreach ent lstdt
(vla-getboundingbox (vlax-ename->vla-object ent) 'mn 'mx)
(vl-cmdf "._rectang" (vlax-safearray->list mn) (vlax-safearray->list mx))
(setq Box (vlax-ename->vla-object (entlast)))
(vl-catch-all-apply 'vla-put-ConstantWidth (list Box 0.5))
)
(setvar "clayer" cur_lay)
(setvar "osmode" oldos)
(setvar "CMDECHO" 1)
 (princ)
)

 

  • Like 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
Vào lúc 25/6/2020 tại 21:48, huunhantvxdts đã nói:

Sửa lại cho bạn thêm block


(defun c:ii (/ lstdt mn mx cur_lay oldos Box)
 (vl-load-com)
(setq cur_lay (getvar "clayer" ))
(setq oldos (getvar "OSMODE"))
(setvar "osmode" 0)
(setvar "cmdecho" 0)
 (if (not (tblsearch "layer" "Khung Viewport"))
 (COMMAND "LAYER" "M" "Khung Viewport" "C" "1" "" "L" "CONTINUOUS" "" "LW" "0.13" "" "P" "N" "" "")
 )
(setvar "clayer" "Khung Viewport")
(prompt "\nChon doi tuong:")
(setq lstdt (acet-ss-to-list (ssget '((0 . "LWPOLYLINE,insert")))))
(foreach ent lstdt
(vla-getboundingbox (vlax-ename->vla-object ent) 'mn 'mx)
(vl-cmdf "._rectang" (vlax-safearray->list mn) (vlax-safearray->list mx))
(setq Box (vlax-ename->vla-object (entlast)))
(vl-catch-all-apply 'vla-put-ConstantWidth (list Box 0.5))
)
(setvar "clayer" cur_lay)
(setvar "osmode" oldos)
(setvar "CMDECHO" 1)
 (princ)
)

 

cám ơn bác, đã ngon rồi <3

 

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

Các bạn cho mình hỏi có hàm nào đưa Pagesetup ở Layout về <None> (như hình) không ?

Mình có tìm trên mạng thấy lisp này:

(vl-load-com)
(defun c:CPS (/ Adoc Layts clyt)
  (setq	aDoc  (vla-get-activedocument (vlax-get-acad-object))
	Layts (vla-get-layouts aDoc)
	clyt  (vla-get-activelayout aDoc)
  )
  (foreach
	    itm
	       (vl-remove (vla-get-name clyt) (layoutlist))
    (vla-copyfrom (vla-item Layts itm) clyt)
  )
  (princ)
)

Nhưng là copy Pagesetup ở Layout hiện hành ra các Layout khác. Giả sử 1 bản vẽ không có Layout nào có Pagesetup là None thì không dùng đc Lisp này.

Các bạn giúp mình nhé, mình cảm ơn !

Screenshot_1.png

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

@Duong Nhat DuyMình chưa rõ ý của Bạn. Bạn có thể kiểm tra tên pagesetup của layout

;http://theswamp.org/lilly_pond/cab/plotstuff.lsp?nossi=1
; Jason Piercey   Jun 12 2003, 1:39 pm  
; Get current page setup
; [layout] - string, layout name 
; returns current pagesetup of [layout] 
(defun currentPagesetup (layout) 
 (cdr 
  (assoc 
   1 
   (dictsearch 
    (cdar 
     (dictsearch 
      (namedobjdict) 
      "acad_layout" 
      ) 
     ) 
    layout 
    ) 
   ) 
  ) 
 ) 

 

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
9 giờ trước, tien2005 đã nói:

@Duong Nhat DuyMình chưa rõ ý của Bạn. Bạn có thể kiểm tra tên pagesetup của layout

  • cadvietlisp.lsp
    lisp help
  •  

;http://theswamp.org/lilly_pond/cab/plotstuff.lsp?nossi=1
; Jason Piercey   Jun 12 2003, 1:39 pm  
; Get current page setup
; [layout] - string, layout name 
; returns current pagesetup of [layout] 
(defun currentPagesetup (layout) 
 (cdr 
  (assoc 
   1 
   (dictsearch 
    (cdar 
     (dictsearch 
      (namedobjdict) 
      "acad_layout" 
      ) 
     ) 
    layout 
    ) 
   ) 
  ) 
 ) 

 

Cái này không phải ý mình, ý mình là 1 hàm đưa cái trong hình về None, vì mình in bằng Pubish 1 lúc nhiều bản vẽ, nhiều Layout, trong đó có nhiều Layout có mấy cái Page setup vớ vẩn như hình (do người khác tạo), đa số thì in ra đều lỗi. Bạn có cách nào ko ?

Screenshot_2.png

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

Bác nên dùng lisp với lệnh -plot để nó lưu các thông tin trên layout hiện tại in rồi chạy cho các layout khác luôn. Khỏi phải cài đặt cho các layout khác nữa

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
15 phút trước, naturooo đã nói:

Bác nên dùng lisp với lệnh -plot để nó lưu các thông tin trên layout hiện tại in rồi chạy cho các layout khác luôn. Khỏi phải cài đặt cho các layout khác nữa

Không hiểu ý bạn là gì nhưng mình đã thử lệnh -PLOT, không có thông tin gì liên quan đến Page setup/ Name cả.

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
35 phút trước, Doan Van Ha đã nói:

Vào trang này, dùng hàm addPageSetup

https://jtbworld.com/autocad-pagesetup-lsp

Cảm ơn bạn nhé, nhưng vẫn không phải ý mình :((

Hàm addPageSetup là hàm thêm 1 pagesetup mới.

Hàm sát với ý mình nhất là hàm SetCurrentPageSetup, ví dụ:

(SetCurrentPageSetup (vla-get-activedocument (vlax-get-acad-object)) "Setup2")

Hàm này chuyển Page setup về "Setup2", ý mình muốn chuyển về None, mình đã thử đổi số thành None, "", nil nhưng vẫn ko đc :((

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
40 phút trước, Duong Nhat Duy đã nói:

Cảm ơn bạn nhé, nhưng vẫn không phải ý mình :((

Hàm addPageSetup là hàm thêm 1 pagesetup mới.

Hàm sát với ý mình nhất là hàm SetCurrentPageSetup, ví dụ:

  • cadvietlisp.lsp
    lisp help
  •  

(SetCurrentPageSetup (vla-get-activedocument (vlax-get-acad-object)) "Setup2"

Hàm này chuyển Page setup về "Setup2", ý mình muốn chuyển về None, mình đã thử đổi số thành None, "", nil nhưng vẫn ko đc :((

Bạn dùng hàm này nhé:

Xóa toàn bộ các setup ko muốn ở layout đi ( sau khi xóa setup layout tự mặc định về none)

;;; (deleteAllPageSetupsinlist <AcadDocument> <PageSetupName>)
;;; (deleteAllPageSetupsinlist (vla-get-activedocument (vlax-get-acad-object)) 
	'("In mau 1" "In mau 2"))
(defun deleteAllPageSetupsinlist (doc names)
  (vlax-for pc (vla-get-plotconfigurations doc)
    (if (member (vla-get-name pc) names)
      (vla-delete pc)
    )
  )
)

Có thể dùng hàm này để xóa tất cả setup luôn

;;; (deleteAllPageSetups <AcadDocument>)
;;; (deleteAllPageSetups (vla-get-activedocument (vlax-get-acad-object)))
(defun deleteAllPageSetups (doc)
  (vlax-for pc (vla-get-plotconfigurations doc)
    (vla-delete pc)
  )
)

 

  • Vote tăng 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
1 giờ} trướ}c, Duong Nhat Duy đã nói:

Cảm ơn bạn nhé, nhưng vẫn không phải ý mình :((

Hàm addPageSetup là hàm thêm 1 pagesetup mới.

Hàm sát với ý mình nhất là hàm SetCurrentPageSetup, ví dụ:

  • cadvietlisp.lsp
    lisp help
  •  

(SetCurrentPageSetup (vla-get-activedocument (vlax-get-acad-object)) "Setup2"

Hàm này chuyển Page setup về "Setup2", ý mình muốn chuyển về None, mình đã thử đổi số thành None, "", nil nhưng vẫn ko đc :((

 

Bạn chỉ cần tạo pagesetup trên layout (cài đặt máy in, giấy, ....) sau đó coupyform cho các layout khác thì tất cả là None. Bạn tham khảo code sau

;;;https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/using-and-characters-in-vla-put-canonicalmedianame/td-p/4842089
(defun c:pagesetups()
  (setq	doc	 (vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq plotCfgs (vla-get-ActiveLayout doc))
    (vla-RefreshPlotDeviceInfo plotCfg)
 
    ;; Set the plot device
    (vla-put-ConfigName plotCfg "DWG To PDG.pc3")
    ;; Set the paper size
    (vla-put-CanonicalMediaName plotCfg "ANSI B \(11.00 x 17.00 Inches\)")
    
    (vla-put-PaperUnits plotCfg acMillimeters)

      (setq PLOT_BL (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) '(-53.540381 -6.990000))
        PLOT_TR (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) '(814.00000000 537.00000000))
    )
    (vla-SetWindowToPlot plotCfg PLOT_BL PLOT_TR)
    (vla-put-PlotType plotCfg acWindow)

    (vla-put-UseStandardScale plotCfg :vlax-true)
    (vla-put-StandardScale plotCfg ac1_2)
    (vla-put-CenterPlot plotCfg :vlax-false)
    ;; Hide paperspace objects
    (vla-put-PlotHidden plotCfg :vlax-false)

      ;; Set the plot offset
    (setq origin (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-fill origin (list 0.0 0.0))
    (vla-put-PlotOrigin plotCfg origin)
  
    (vla-put-PlotRotation plotCfg ac90degrees)
    (vla-put-PlotViewportBorders plotCfg :vlax-false)
    (vla-put-PlotViewportsFirst plotCfg :vlax-false)
    (vla-put-PlotWithLineweights plotCfg :vlax-true)
    (vla-put-ScaleLineweights plotCfg :vlax-false)
    (vla-put-PlotWithPlotStyles plotCfg :vlax-true)
    (vla-put-ShowPlotStyles plotCfg :vlax-true)
    (vla-put-StyleSheet plotCfg "MTO_monochrome_Half_Size.ctb")
    (vla-RefreshPlotDeviceInfo plotCfg)

  ;http://forums.augi.com/showthread.php?44555-Apply-page-setup-to-multiple-layouts
(vlax-map-collection
	(vla-get-layouts doc)
	'(lambda (x)
	   (if (eq (vla-get-modeltype x) :vlax-false)
	     (vl-catch-all-error-p (vl-catch-all-apply 'vla-copyfrom (list x plotCfgs)))
	   )
	 )
      )
    (princ)
)

 

  • Vote tăng 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
3 giờ trước, Duong Nhat Duy đã nói:

Không hiểu ý bạn là gì nhưng mình đã thử lệnh -PLOT, không có thông tin gì liên quan đến Page setup/ Name cả.

Kiểu như thế này đây bác.

  • Vote tăng 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
3 giờ trước, Biet ve CAD đã nói:

Bạn dùng hàm này nhé:

Xóa toàn bộ các setup ko muốn ở layout đi ( sau khi xóa setup layout tự mặc định về none)

  • cadvietlisp.lsp
    lisp help
  •  

;;; (deleteAllPageSetupsinlist <AcadDocument> <PageSetupName>)
;; (deleteAllPageSetupsinlist (vla-get-activedocument (vlax-get-acad-object)) 
	'("In mau 1" "In mau 2"))
(defun deleteAllPageSetupsinlist (doc names)
  (vlax-for pc (vla-get-plotconfigurations doc)
    (if (member (vla-get-name pc) names)
      (vla-delete pc)
    )
  )
)

Có thể dùng hàm này để xóa tất cả setup luôn

  • cadvietlisp.lsp
    lisp help
  •  

;;; (deleteAllPageSetups <AcadDocument>)
;; (deleteAllPageSetups (vla-get-activedocument (vlax-get-acad-object)))
(defun deleteAllPageSetups (doc)
  (vlax-for pc (vla-get-plotconfigurations doc)
    (vla-delete pc)
  )
)

 

Mình đã thử cách này, hơi nửa vời, vẫn lỗi khi Publish

Screenshot_1.png

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
3 giờ trước, tien2005 đã nói:

 

Bạn chỉ cần tạo pagesetup trên layout (cài đặt máy in, giấy, ....) sau đó coupyform cho các layout khác thì tất cả là None. Bạn tham khảo code sau

  • pagesetups.lsp
    lisp help
  •  

;;;https://forums.autodesk.com/t5/visual-lisp-autolisp-and-general/using-and-characters-in-vla-put-canonicalmedianame/td-p/4842089
(defun c:pagesetups()
  (setq	doc	 (vla-get-ActiveDocument (vlax-get-acad-object)))
    (setq plotCfgs (vla-get-ActiveLayout doc))
    (vla-RefreshPlotDeviceInfo plotCfg)
 
    ;; Set the plot device
    (vla-put-ConfigName plotCfg "DWG To PDG.pc3")
    ;; Set the paper size
    (vla-put-CanonicalMediaName plotCfg "ANSI B \(11.00 x 17.00 Inches\)")
    
    (vla-put-PaperUnits plotCfg acMillimeters)

      (setq PLOT_BL (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) '(-53.540381 -6.990000))
        PLOT_TR (vlax-safearray-fill (vlax-make-safearray vlax-vbDouble '(0 . 1)) '(814.00000000 537.00000000))
    )
    (vla-SetWindowToPlot plotCfg PLOT_BL PLOT_TR)
    (vla-put-PlotType plotCfg acWindow)

    (vla-put-UseStandardScale plotCfg :vlax-true)
    (vla-put-StandardScale plotCfg ac1_2)
    (vla-put-CenterPlot plotCfg :vlax-false)
    ;; Hide paperspace objects
    (vla-put-PlotHidden plotCfg :vlax-false)

      ;; Set the plot offset
    (setq origin (vlax-make-safearray vlax-vbDouble '(0 . 1)))
    (vlax-safearray-fill origin (list 0.0 0.0))
    (vla-put-PlotOrigin plotCfg origin)
  
    (vla-put-PlotRotation plotCfg ac90degrees)
    (vla-put-PlotViewportBorders plotCfg :vlax-false)
    (vla-put-PlotViewportsFirst plotCfg :vlax-false)
    (vla-put-PlotWithLineweights plotCfg :vlax-true)
    (vla-put-ScaleLineweights plotCfg :vlax-false)
    (vla-put-PlotWithPlotStyles plotCfg :vlax-true)
    (vla-put-ShowPlotStyles plotCfg :vlax-true)
    (vla-put-StyleSheet plotCfg "MTO_monochrome_Half_Size.ctb")
    (vla-RefreshPlotDeviceInfo plotCfg)

  ;http://forums.augi.com/showthread.php?44555-Apply-page-setup-to-multiple-layouts
(vlax-map-collection
	(vla-get-layouts doc)
	'(lambda (x)
	   (if (eq (vla-get-modeltype x) :vlax-false)
	     (vl-catch-all-error-p (vl-catch-all-apply 'vla-copyfrom (list x plotCfgs)))
	   )
	 )
      )
    (princ)
)

 

Oh hay quá, vậy nghĩa là chỉ cần modify vài thứ cho khác Pagesetup hiện tại là nó tự chuyển về None luôn nhỉ, cảm ơn bạn nhé :))

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
Vừa xong, Biet ve CAD đã nói:

Của bạn vẫn còn setup name tên là 2 kìa, bạn dùng hàm xóa hết các setup đi là tất cả về none

Đúng r bạn ơi, sau khi xóa bằng lệnh đó nó vẫn như thế ấy, mà thôi mình có câu trả lời r, cảm ơn các bạn nhé.

Cảm ơn @narutoo nhé, bạn đi hơi xa quá, mình chỉ cần tên hàm thôi bạn nhé.

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
15 phút trước, naturooo đã nói:

Tại thấy bác dùng Publish thì hơi bất tiện 1 layout được 1 bản vẽ thì phải :D

Đúng r bạn, nhưng chỉ cần làm chuẩn chỉ thì Publish vẫn ngon, mình thấy đây là cách đơn giản nhất r, quan trọng là ko cần thêm bất cứ file gì đi kèm (ví dụ file lisp, file sheetset)

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

Các bác cho e hỏi file lisp có các vòng lặp gì mà dòng nhắc lệnh cứ báo là: 

 

Command: a22
Select objects: Specify opposite corner: 3 found

Select objects:  Unknown command "A22".  Press F1 for help.
Unknown command "A22".  Press F1 for help.
Unknown command "A22".  Press F1 for help.
Unknown command "A22".  Press F1 for help.
Unknown command "A22".  Press F1 for help.

 

 

Xin cảm ơn! 

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

Ý em hỏi sao em chạy lisp có lệnh là A22 nó vẫn chạy được ra kết quả mong muốn nhưng nó cứ báo:  "Unknown command "A22".  Press F1 for help" trong hộp nhắc lệnh đó bác. em hỏi không rõ ý vì diễn đạt chứ em rất nghiêm túc mà.... 

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
(defun c:a22 ( / sel :n e1 e1n poly POLY_vl Dx Dy Lp List_vert_poly
                list_p_int P_center dist step1 step2 bienchung)

    (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))   
    
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mmmmmmmmmmmmmmmmmmmmmmmmmmmm......../////////////////////////////

(if (setq chonlinepolyline (ssget '((-4 . "<OR")(0 . "LINE")(0 . "CIRCLE")(0 . "SPLINE")(0 . "ARC")(0 . "ELLIPSE")(0 . "*POLYLINE")(-4 . "OR>"))))
    (progn   
      (setq chonpolyline (ssadd))
      (setq lsppolyline nil)
      (setq i 0)
      (repeat (sslength chonlinepolyline)
    (taopolyline (ACET-GEOM-OBJECT-POINT-LIST (ssname chonlinepolyline i)
               (/ (vlax-curve-getdistatparam (ssname chonlinepolyline i) (vlax-curve-getendparam (ssname chonlinepolyline i)))
              10000)) "0" 1)
    (ssadd (entlast) chonpolyline)
    (setq lsppolyline (append lsppolyline (list (ACET-GEOM-OBJECT-POINT-LIST (ssname chonlinepolyline i)
                              (/ (vlax-curve-getdistatparam (ssname chonlinepolyline i) (vlax-curve-getendparam (ssname chonlinepolyline i)))
                             10000)))))
    (setq i (+ i 1))
    )
      (setq lspgiaodiem (LM:IntersectionsInSet chonpolyline))
      (setq chonline (ssadd))
      (setq lspchonline nil)
      (setq lsp2diemline nil)
      (foreach lsp lsppolyline
    (foreach diemgiao lspgiaodiem
      (setq lsp (DDH:pointtolsppoint diemgiao lsp))
      )
    (setq i 0)
    (repeat (- (length lsp) 1)
      (setq lsp2diemline (append lsp2diemline (list (list (nth i lsp) (nth (+ i 1) lsp)))))
      (setq i (+ i 1))
      )
    )
      (setq lsp2diemline (LM:Uniqueline lsp2diemline))
      (foreach line lsp2diemline
    (entmakex (list '(0 . "LINE")
            (cons 10 (car line))
            (cons 11 (cadr line))
            ))
    (ssadd (entlast) chonline)
    (setq lspchonline (append lspchonline (list (vlax-ename->vla-object (entlast)))))
    )
      (or acDoc (setq acDoc (vla-get-activedocument (vlax-get-acad-object))))
      (setq ms (vlax-get acDoc (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace)))
      (if (setq lsptongregion (vlax-invoke ms 'AddRegion lspchonline))
    (progn
      (command "ERASE" chonline "")
      (command "ERASE" chonpolyline "")
      (setq lspxetbien nil)
      (foreach tungregion lsptongregion
        (setq lspxetbien (append lspxetbien (list (list (vlax-vla-object->ename tungregion) (vlax-get-property tungregion 'area)))))
        )
      (setq lspxetbien (vl-sort lspxetbien (function (lambda (e1 e2) (> (cadr e1) (cadr e2))))))
        (setq rt (FiltReg lspxetbien))
      (foreach r rt
            (setq lspxetbien (vl-remove r lspxetbien))
        (entdel (car r))
      )
            
      (setq mau 0)
      (foreach xetpl lspxetbien
            (setq mau (1+ (rem mau 255)))
	    (setq bienchung (car xetpl))
	    (1re2pl bienchung)
	    (setq e1 (entlast))
	    (setq mau (+ mau 1))
;                                                            

    (if (and
            ;(princ "\nSelect objects (caloaidoituong): ")

	  )
      (Progn
		(cond
                    ( (= "LWPOLYLINE" (cdr (assoc 0 (entget e1)))) (poly_c e1) )
                    ( t (setq P_center (cdr (assoc 10 (entget e1)))))
                )
                (entmake
                    (list
                        (cons 0 "TEXT")
                        (cons 8 (getvar "clayer"))
                        (cons 7 (getvar "textstyle"))
                        (cons 10 P_center)
                        (cons 11 P_center)
                        (cons 40 (getvar "textsize"))
                        (cons 72 1)
                        (cons 73 2)
                        (cons 1 (rtos (vlax-curve-getArea e1) 2 1))
                    )
                )
		(command "ERASE" e1 "")
     )
        (alert "No valid object selected")
    )
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))   
    (princ)
  ;;;;;;;;;;;;;;;;;;;;;;;;;;bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
	)
      )
)
)
)
)

Bác xem giúp nhé bệnh nhân đây. tiện bác xem giúp em cho lisp chạy nhanh hơn không chứ nó chạy chậm quá. Thanks!

  • Vote giảm 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
1 giờ} trướ}c, naturooo đã nói:

Các bác cho em hỏi chút là làm sao để chèn ảnh vào Tiêu đề của DCL như hình sau ạ. Em cảm ơn!

 

image1.png

Theo mình biết thì DCL không làm được cái này thì phải, bạn tìm hiểu .Net xem

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
36 phút trước, Doan Nguyen Van đã nói:

Theo mình biết thì DCL không làm được cái này thì phải, bạn tìm hiểu .Net xem

Em thấy hộp thoại của bác @Biet ve CAD có hình tưởng DCL làm được :(

screenshot_1600488593.png

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

Tạo một tài khoản hoặc đăng nhập để nhận xét

Bạn cần phải là một thành viên để lại một bình luận

Tạo tài khoản

Đăng ký một tài khoản mới trong cộng đồng của chúng tôi. Điều đó dễ mà.

Đăng ký tài khoản mới

Đăng nhập

Bạn có sẵn sàng để tạo một tài khoản ? Đăng nhập tại đây.

Đăng nhập ngay

×