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

Bee

Thành viên
  • Số lượng nội dung

    546
  • Đã tham gia

  • Lần ghé thăm cuối

  • Ngày trúng

    37

Bài đăng được đăng bởi Bee


  1. 1 giờ trước, HOABAN_QD đã nói:

    Nhờ ECE trên diễn đàn giúp đỡ.

    Trong Acad có lệnh MATCHPROP (lệnh tắt là MA), có lisp nào tương tự để Dim b có được text overide ABC. Thanks!

    MATCHROP TEXT OVERIDE.dwg

    Chủ thớt test hàng họ nhé ^_^

    (defun c:MD ()
      (vlax-put (vlax-ename->vla-object (car (entsel "\nChon Dim matchprop: "))) 'TextOverride (vlax-get (vlax-ename->vla-object (car (entsel "\nChon Dim goc: "))) 'TextOverride))
      (princ)
      )

     


  2. 6 phút trước, Doan Nguyen Van đã nói:

    Chắc bạn k hiểu ý bạn Cuongtk, muốn đổi tên biến,.  Nếu find thì sẽ đổi nhầm cả các tên khác giống tên biến.

    Find cũng là 1 nghệ thuật mà. 

    Căn bản nếu viết 1 chương trình phức tạp thì cũng phải chia nhỏ nhiều defun con. Cách đặt tên funtion hay defun cũng quan trọng. Nếu compile tốt thì tên tuổi các biến cũng tương đối là chuẩn rồi thì find hay replace tương đối là dễ dàng.

    Ý kiến mình chút xíu zậy thoai.

    Còn lại hóng tiếp. ^_^


  3. 29 phút trước, cuongtk2 đã nói:

    Tròn VLIDE có chức năng rename toàn bộ biến hay tham số không ?

    Ví dụ:

    (defun ham (a b)( + a b))

    (defun test ( / point1 point2)

    (setq point1 (getpoint) point2 (polar point1 0 1000)))

     

    Mình muốn rename toàn bộ a thành a1  hoặc point1 thành p1 trong hàm thì làm thế nào?

     

    Find and replace như bình thường mà chủ thớt.

    image.png.578485ff03015dfa34aeeb67caa25521.png

    • Like 1

  4. 19 giờ trước, le_na đã nói:

    Chào các bác

    Em có 01 bản vẽ bị tình trạng như sau: khi em dim đường kính hình tròn bất kỳ thì cái mũi tên dim nó cứ cố định chỗ (hình đính kèm), em đã chọn lên bất kỳ điểm nào trên đường tròn thì cái mũi tên dim vẫn giữ nguyên chỗ ( 1 góc độ cố định) trong khi cái test thì vẫn đặt tự do được. Trong 01 bản vẽ khác thì khi em dùng lệnh DLI xong chọn điểm bất kỳ trên đường tròn thì mũi tên dim sẽ hiện ra ngay vị trí đó luôn, em đã có mò trong bảng Dimension Style Manager mà vẫn không biết chỗ nào để chỉnh. Bác nào đã gặp tình trạng này  & biết chỉnh chỗ này thì chỉ em với. Em cám ơn các bác

    Capture.PNG

    Có thể có lỗi đơn giản là lock layer. ^_^ Do vậy không có bản vẽ không ai check thử được cho chủ thớt đâu.


  5. 10 giờ trước, 888x888x888 đã nói:

    Mình tìm nhiều nhưng toàn lisp kiểu này mà toàn cái phức tạp quá mức mình cần thiết

    Mình muốn nhờ các bác làm hộ mình 1 cái lisp thật đơn giản thế này, pick vào line rồi xuất vào text có sẵn, chỉ vậy thôi, như cái lisp mình đang dùng mà ko phải pick điểm đầu, điểm cuối nữa mà pick vào line luôn (cả pline thì tốt) 

    Cảm ơn các bác

    Lisp mình đang dùng đây:

    (defun c:gt (/ p1 p2 txt etxt d)
    (setq p1 (getpoint "\n Chon diem thu nhat")
              p2 (getpoint "\n Chon diem thu hai ")
              txt (car (entsel "\n Chon text can thay" ))
              d (distance p1 p2)
             etxt (entget txt)
             etxt (subst (cons 1 (rtos d 2 2)) (assoc 1 etxt) etxt)
    )
    (entmod etxt)
    (princ)
    ) 

    Lisp đây chủ thớt nhé:

    (defun c:gt1  (/ line txt etxt d)
      (setq line (car (entsel "\Chon line: ")))
      (setq d (distance (cdr (assoc 10 (entget line))) (cdr (assoc 11 (entget line)))))
      (setq txt  (car (entsel "\n Chon text can thay"))
            etxt (entget txt)
            etxt (subst (cons 1 (rtos d 2 2)) (assoc 1 etxt) etxt)
            )
      (entmod etxt)
      (princ)
      )

     

    • Like 1

  6. 15 giờ trước, pdhuyxn2 đã nói:

    Bác có thế Chỉnh Sửa LISP Copy từ EXCEL hàng Dọc PAS sang CAD hàng ngang được không A?

    Nhờ Các Bác trên Diễn Đàn Giúp đỡ. Cám ơn các Bác nhiều ạ...

    Chỉnh thì chỉnh được, hơi mất công thêm chút. Bạn gửi chút phí mình ngồi cafe rồi chỉnh cho ^_^

     


  7. 9 phút trước, Chutuyen đã nói:

    em làm theo hướng dẫn mà không được bác à?

       (setq s1 (vl-sort (ss_vla s2)
                     '(lambda (a b)
                    (< (car (vlax-get a 'InsertionPoint))
                       (car (vlax-get b 'InsertionPoint))
                    )
                      )
              )
        )

        (setq s2 (vl-sort (ss_vla s2)
                     '(lambda (a b)
                    (< (car (vlax-get a 'InsertionPoint))
                       (car (vlax-get b 'InsertionPoint))
                    )
                      )
              )
        ) 

    thay cả 2 dòng này chưa ?


  8. 1 giờ trước, Tai8998 đã nói:

    chào các anh ,em muốn hỏi về vòng lặp

    khi lặp n lần dùng hàm ( repeat ( 1+ n))

    vậy khi muốn chương trình chạy từ 1 đến n rồi sau đó quay về  (n-1) và về 1 thì cú pháp như nào ạ

    mong m.n giúp đỡ ạ

    Chưa hiểu được rõ ý đồ chủ thớt. Up code lên được không ?


  9. 3 giờ trước, Binh Luu đã nói:


    Em chào các bậc tiền bối ạ,

    Hiện tại e đang cần các bác giúp e một lisp cad như sau ạ: (để rõ ràng mời các bác xem file pdf e có đính kèm bên dưới)

    Đầu vào:
    -    Các hình đa giác kín hình dạng và kích thước khác nhau được vẽ bằng lệnh pline
    Đầu ra:
    -    Xuất ra bảng thống kê bao gồm các cột: hình dạng đa giác, kích thước các cạnh, số lượng hình giống nhau, diện tích và chiều dài (xuất ra thông tin của đa giác đó)

    Em là dân ngoại đạo nên không biết lisp này có dễ viết hay không nữa. Do nhu cầu công việc nên hiện tại đang cần. Không biết có bác nào giúp được e. E xin hậu tạ ạ

    Cuối cùng e chúc các bác nhiều sức khỏe và diễn đàn ngày càng lớn mạnh hơn nữa!

    YÊU CẦU VIẾT LISP-Model.pdf

    RECDIMS_DEM HCN.LSP

    YÊU CẦU VIẾT LISP-Model 2.pdf

    Lisp này chắc phải mất phí thì mới có đc rồi. :D

    • Like 1

  10. Vào lúc 3/9/2020 tại 15:42, tienhuy93 đã nói:

    Nhờ các bác cho em xin lisp chuyển từ SPLINE thành 3DPolyline với ạ . Em cảm ơn

    SPL to 3Dpolyline.dwg

    Hỏi a GG là ra tương đối nhiều. Đây là 1 ví dụ :D

    ;;CADALYST 12/03 AutoLISP Solutions  SPLINE-TO-PLINE.LSP
    ;;(c) 2003 Tony Hotchkiss
    
    (defun spline-to-pline (/ i)
      (vl-load-com)
      (setq	*thisdrawing* (vla-get-activedocument
    			(vlax-get-acad-object)
    		      ) ;_ end of vla-get-activedocument
    	*modelspace*  (vla-get-ModelSpace *thisdrawing*)
      ) ;_ end of setq
      (setq spline-list (get-spline))
      (setq i (- 1))
      (if spline-list
        (progn
          (setq msg "\nNumber of segments <100>: ")
          (initget 6)
          (setq num (getint msg))
          (if (or (= num 100) (= num nil))
    	(setq num 100)
          ) ;_ end of if
          (repeat (length spline-list)
    	(setq splobj (nth (setq i (1+ i)) spline-list))
    	(convert-spline splobj num)
          ) ;_ end of repeat
        ) ;_ end of progn
      ) ;_ end of if
    ) ;_ end of spline-to-pline
    
    (defun get-spline (/ spl-list obj spline no-ent i)
      (setq	spl-list nil
    	obj	 nil
    	spline	 "AcDbSpline"
    	selsets	 (vla-get-selectionsets *thisdrawing*)
    	ss1	 (vlax-make-variant "ss1")
      ) ;_ end of setq
      (if (= (vla-get-count selsets) 0)
        (setq ssobj (vla-add selsets ss1))
      ) ;_ end of if
      (vla-clear ssobj)
      (setq no-ent 1)
      (while no-ent
        (prompt "\nSelect splines: ")
        (vla-Selectonscreen ssobj)
        (if	(> (vla-get-count ssobj) 0)
          (progn
    	(setq no-ent nil)
    	(setq i (- 1))
    	(repeat	(vla-get-count ssobj)
    	  (setq
    	    obj	(vla-item ssobj
    			  (vlax-make-variant (setq i (1+ i)))
    		) ;_ end of vla-item
    	  ) ;_ end of setq
    	  (cond
    	    ((= (vlax-get-property obj "ObjectName") spline)
    	     (setq spl-list
    		    (append spl-list (list obj))
    	     ) ;_ end of setq
    	    )
    	  ) ;_ end-of cond
    	) ;_ end of repeat
          ) ;_ end of progn
          (prompt "\nNo entities selected, try again.")
        ) ;_ end of if
        (if	(and (= nil no-ent) (= nil spl-list))
          (progn
    	(setq no-ent 1)
    	(prompt "\nNo splines selected.")
    	(quit)
          ) ;_ end of progn
        ) ;_ end of if
      ) ;_ end of while  
      (vla-delete (vla-item selsets 0))
      spl-list
    ) ;_ end of get-spline
    
    (defun convert-spline (splobj n / i)
      (setq	point-list   nil
    	2Dpoint-list nil
    	z-list	     nil
    	spl-lyr	     (vlax-get-property splobj 'Layer)
    	startSpline  (vlax-curve-getStartParam splobj)
    	endSpline    (vlax-curve-getEndParam splobj)
    	i	     (- 1)
      ) ;_ end of setq
      (repeat (+ n 1)
        (setq i (1+ i))
        (setq p (vlax-curve-getPointAtParam
    	      splobj
    	      (* i
    		 (/ (- endspline startspline) n)
    	      ) ;_ end of *
    	    ) ;_ end of vlax-curve-getPointAtParam
        ) ;_ end of setq
        (setq 2Dp	       (list (car p) (cadr p))
    	  2Dpoint-list (append 2Dpoint-list 2Dp)
    	  point-list   (append point-list p)
    	  z	       (caddr p)
    	  z-list       (append z-list (list z))
        ) ;_ end of setq
      ) ;_ end of repeat
      (setq summ (apply '+ z-list))
      (setq	arraySpace
    	 (vlax-make-safearray
    	   vlax-vbdouble ; element type
    	   (cons 0
    		 (- (length point-list) 1)
    	   ) ; array dimension
    	 ) ;_ end of vlax-make-safearray
      ) ;_ end of setq
      (setq vert-array (vlax-safearray-fill arraySpace point-list))
      (vlax-make-variant vert-array)
      (if (and (= :vlax-true (vlax-get-property splobj 'IsPLanar))
    	   (= summ 0.0)
          ) ;_ end of and
        (setq plobj	(add-polyline
    		  2Dpoint-list
    		  vla-AddLightweightPolyline
    		) ;_ end of add-polyline
        ) ;_ end of setq
        (setq plobj	(add-polyline
    		  point-list
    		  vla-Add3DPoly
    		) ;_ end of add-polyline
        ) ;_ end of setq
      ) ;_ end of if
      (vlax-put-property plobj 'Layer spl-lyr)
      (vla-delete splobj)
      (vlax-release-object splobj)
    ) ;_ end of convert-spline
    
    (defun add-polyline (pt-list poly-func)
      (setq	arraySpace
    	 (vlax-make-safearray
    	   vlax-vbdouble
    	   (cons 0
    		 (- (length pt-list) 1)
    	   ) ; array dimension
    	 ) ;_ end of vlax-make-safearray
      ) ;_ end of setq
      (setq	vertex-array
    	 (vlax-safearray-fill arraySpace pt-list)
      ) ;_ end of setq
      (vlax-make-variant vertex-array)
      (setq	plobj (poly-func
    		*modelspace*
    		vertex-array
    	      ) ;_ end of poly-func
      ) ;_ end of setq
    ) ;_ end of add-polyline
    
    (defun c:s2p ()
      (spline-to-pline)
      (princ)
    ) ;_ end of c:s2p
    
    (prompt
      "SPLINE-TO-PLINE by Tony Hotchkiss. Enter S2P to start"
    ) ;_ end of prompt

     

    • Like 2
×