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

Bee

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

    553
  • Đã 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, 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 ?


  2. 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

  3. 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

  4. 59 phút trước, lesang đã nói:

    các bác cho em hỏi 1 . h em muốn phá vỡ text sang nét vẽ để chuyển sang sử dụng máy cnc mà em có tham khảo trên diễn đàn sử dụng lệnh TXTEXP đê phá vỡ nhưng em ko dùng đc lệnh đó. k biết có phải dùng lisp ko ạ 

     

    Nếu ko dùng được thì bạn cài thêm express.

    Hoặc cách khác là print sang PDF rồi import ngược lại CAD thì sẽ là hatch, sau đó tạo lại đường bao hatch là đc.


  5. 1 giờ trước, Doan Van Ha đã nói:

    Dòng lệnh rename bằng vlax-put như thế nào, cho xem để góp ý thêm, vì khoản Vietnamese này trong lisp còn nhiều thứ đau đầu lắm.

    Về căn bản là em thấy nó đọc đc giá trị bao nhiêu thì xử luôn không cho ra command thì sẽ không bị khác giá trị. 

    Đây là ví dụ em xử nó :D

      (setq n 0)
      (vlax-for x (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))     
        (if	(vl-string-search "DIM" (strcase (vla-get-name x)))
          (progn
    	(setq new_name (strcat "dim_temp" (rtos n 2 0)))
    	(vlax-put x 'name new_name)
    	(setq layers (cons new_name layers))
    	(setq n (1+ n))
          )					;progn
        )					;if
      )					;vlax-for

     


  6. 10 giờ trước, h123ngoisao đã nói:

    Vậy bạn sửa giúp mình và thêm lựa chọn file ".dxf" vào lisp nhé.

    Cám ơn bạn.

    Nếu free : Để sort đúng thì bạn chỉnh từ 1-9 thêm 0 vào trước.

    Nếu không muốn cách trên thì inbox mình chút phí cafe ngồi viết code cho bạn.

    Thêm file dxf thì thay đoạn sau: "dwg;dxf" thay cho "dwg"

     

    ^_^

     


  7. Vào lúc 8/2/2020 tại 15:52, Auhtumn đã nói:

    Hi, moi người xem block trong file cad của em ạ 

    Mỗi lần em sửa ở bản vẽ A rồi Redefine về bản vẽ B thì các đối tượng nó bị nhân lên, làm bản vẽ nặng hơn. Mọi người giúp em với ạ, em cám ơn !

    https://drive.google.com/file/d/1gi-MXNHYvf2H3joTkEk4CtqspDLJMjtr/view?usp=sharing 

    Remove hết lisp autoload.

    Mở bản vẽ mới thử dùng lệnh,

    File mở máy mình vẫn bình thường ko bị lỗi đó.


  8. 5 giờ trước, h123ngoisao đã nói:

    Cám ơn bạn đã giúp đỡ mình.

    File sau khi ghộp có hiện tượng như ảnh. Bạn sửa giúp mình nhé.

     

    screenshot_1581501002.png

    Trường hợp unit inch: khoảng cách 50 > khung sẽ không lỗi.

    335475549_nh.thumb.png.a13be330806d0c5dc503ef99a1414685.png

    Trường hợp unit mm: 50 nhỏ hơn khung > sẽ lỗi.

    578949356_nh.thumb.png.f0aa7c85aec8bc4bd5b012108b7eef53.png

     

    Do vậy bạn tăng khoảng cách 50 thành lớn hơn khung thành 500 thử xem.

     

    ^_^

     

    PS: mà sao sort ko theo thứ tự nhỉ. :D

     

    ảnh.png

    ảnh.png

    • Like 1

  9. 9 giờ trước, lepro135 đã nói:

    xin chào anh/chị trên diễn đàn. cho e hỏi có cách nào để xoay nhiều đối tượng trong cad mà tâm quay lại  chính là tâm  của từng đối tượng không. em đang vẽ quy hoạch cần quay nhiều text. mà quay từng text thì đuối quá. mong mọi người chỉ giúp. em xin cảm ơn!

    Dùng lệnh "torient" nhé

     

    ^_^

    • Like 1

  10. 3 giờ trước, letuan0601 đã nói:

    Mình có thắc mắc về field là khi đo chiều dài thanh thép như hình dưới thì làm sao gán field vào các số ứng với chiều dài từng đoạn được. Khi mình thay đổi chiều dài  đoạn nào thì tự động chiều dài thay đổi theo! Mong các bạn giúp đỡ.

    FAFAF.PNG

    Thử dùng dim tắt hết các line đi ! Đơn giản hơn field.

×